Skip to content

如何在 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)
KaggleColabGitHub

什么是 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 工作流。