如何在 Pandas 中创建空 DataFrame
Updated on
在任何数据分析工作流中,和数据打交道都是核心环节。无论你的数据来自 CSV 文件、SQL 数据库、JSON 响应,还是外部 API,Pandas 都提供了一个强大且直观的接口,帮助你进行数据清洗、转换和探索。
在这篇指南中,我们将介绍在 Pandas 中创建空 DataFrame 的多种实用方法,解释每种方法适用的场景,并引入现代最佳实践(包括如何创建带有列类型的空 DataFrame)。
🚀 想一键把你的 DataFrame 变成交互式可视化分析工具吗?
PyGWalker 是一个开源 Python 库,可以在你的 Jupyter Notebook 里添加拖拽式的数据探索界面。
你可以这样尝试:
pip install pygwalker import pygwalker as pyg gwalker = pyg.walk(df)
你可以在以下在线 Notebook 中立即体验 PyGWalker:
| Run PyGWalker in Kaggle Notebook (opens in a new tab) | Run PyGWalker in Google Colab (opens in a new tab) | Give PyGWalker a ⭐️ (opens in a new tab) |
|---|---|---|
![]() | ![]() | ![]() |
什么是 DataFrame?
DataFrame 是 Pandas 中一种二维的表格型数据结构,每一列可以拥有不同的数据类型。你可以把它理解为电子表格或 SQL 表。DataFrame 支持非常丰富的操作,例如:
- 过滤与切片
- 合并与连接
- 聚合
- 变形与重塑
- 可视化
为什么要创建空 DataFrame?
在以下场景中,空 DataFrame 非常有用:
- 在加载数据前先定义好“表结构”(schema)
- 以编程方式逐行追加数据
- 在循环或聚合操作前初始化结果表
- 为增量更新预先准备好数据结构
例如:在导入商品数据之前,先准备一个包含商品信息字段的表。
⭐ 方法快速对比
| 方法 | 最佳使用场景 |
|---|---|
pd.DataFrame() | 创建一个完全空的“外壳” |
pd.DataFrame(columns=[...]) | 只定义列名,不带数据 |
pd.DataFrame({col: []}) | 使用空列表来定义列 |
pd.Series(dtype=...) | 同时定义列名 和 数据类型(推荐用于专业工作流) |
pd.DataFrame.from_dict() | 和字典方法类似,主要是风格选择 |
如何创建空 DataFrame(3 个经典方法 + 1 个现代最佳实践)
方法一:使用 DataFrame() 构造函数
最简单的方式:
import pandas as pd
df = pd.DataFrame()
print(df)输出:
Empty DataFrame
Columns: []
Index: []之后再添加列:
df.columns = ['ProductID', 'ProductName', 'Description', 'Price']
df方法二:使用空列表的 dict()
这种方法在保持 DataFrame 为空的同时,先定义好列名:
import pandas as pd
data = dict(ProductID=[], ProductName=[], Description=[], Price=[])
df = pd.DataFrame(data)
df方法三:使用 from_dict()
与方法二等价 — 更多是书写风格的差异:
import pandas as pd
data = {
'ProductID': [],
'ProductName': [],
'Description': [],
'Price': []
}
df = pd.DataFrame.from_dict(data)
df⭐ 现代方法(推荐)
创建带有列名和数据类型的空 DataFrame
在 Pandas 2.x 中,最佳实践是提前定义好各列的数据类型:
import pandas as pd
df = pd.DataFrame({
"ProductID": pd.Series(dtype="int"),
"ProductName": pd.Series(dtype="string"),
"Description": pd.Series(dtype="string"),
"Price": pd.Series(dtype="float"),
})
df这种方式特别适合在以下情况使用:
✔ 从 API 加载数据
✔ 需要可预测且稳定的类型
✔ 构建 ETL 管道时
✔ 想要避免后续关于 dtype 的警告
如何检查 DataFrame 是否为空
使用 .empty 属性:
df = pd.DataFrame()
print(df.empty) # True
non_empty = pd.DataFrame({"A": [1]})
print(non_empty.empty) # False总结
在 Pandas 中创建空 DataFrame 是一个基础但非常重要的操作。根据你的工作流,你可以:
- 创建一个简单的空“外壳”
- 初始化带列名但无数据的表
- 明确定义列的数据类型(推荐,用于构建干净的处理流水线)
- 使用基于字典的 schema 提升代码可读性
现在你可以根据项目需要,选择最合适的方法,构建更加清晰、可预测的 Pandas 工作流。


