Pandas2.2 DataFrame
Serialization IO conversion
方法 | 描述 |
---|---|
DataFrame.from_dict(data[, orient, dtype, …]) | 用于从 字典(dict) 构建 DataFrame 的类方法 |
DataFrame.from_records(data[, index, …]) | 用于将 结构化数据(如列表的元组、NumPy 结构化数组)转换为 DataFrame |
DataFrame.to_orc([path, engine, index, …]) | 用于将 DataFrame 保存为 ORC(Optimized Row Columnar)格式的文件 |
DataFrame.to_parquet([path, engine, …]) | 用于将 DataFrame 写入 Parquet 文件格式的方法 |
DataFrame.to_pickle(path, *[, compression, …]) | 用于将 DataFrame 对象序列化并保存为 pickle 文件的方法 |
DataFrame.to_csv([path_or_buf, sep, na_rep, …]) | 用于将 DataFrame 写入 CSV(逗号分隔值)文件的方法 |
DataFrame.to_hdf(path_or_buf, *, key[, …]) | 用于将 DataFrame 写入 HDF5 文件的方法 |
DataFrame.to_sql(name, con, *[, schema, …]) | 用于将 DataFrame 写入 SQL 数据库的方法 |
DataFrame.to_dict([orient, into, index]) | 用于将 DataFrame 转换为 Python 字典 |
DataFrame.to_excel(excel_writer, *[, …]) | 用于将 DataFrame 写入 Excel 文件的方法 |
pandas.DataFrame.to_excel()
pandas.DataFrame.to_excel()
是 Pandas 提供的用于将 DataFrame 写入 Excel 文件的方法。它支持多种参数来控制输出格式、位置、缺失值表示等,适用于生成结构化报表或数据导出。
📌 方法签名
DataFrame.to_excel(
excel_writer,
*,
sheet_name='Sheet1',
na_rep='',
float_format=None,
columns=None,
header=True,
index=True,
index_label=None,
startrow=0,
startcol=0,
engine=None,
merge_cells=True,
inf_rep='inf',
freeze_panes=None,
storage_options=None,
engine_kwargs=None
)
🔍 参数说明
参数名 | 类型 | 描述 |
---|---|---|
excel_writer | str 或 ExcelWriter 对象 | 输出文件路径或已打开的 ExcelWriter 对象(可写多个 sheet) |
sheet_name | str,默认 'Sheet1' | Excel 表单名称(不能超过 31 字符,不能包含非法字符) |
na_rep | str,默认 '' | 缺失值(NaN)的表示方式 |
float_format | callable 或 str,可选 | 控制浮点数输出格式,如 "{:.2f}".format |
columns | list-like,可选 | 选择写入的列,按指定顺序排列 |
header | bool 或 list, 默认 True | 是否写入列名;若为 list,则作为自定义列名 |
index | bool,默认 True | 是否写入行索引 |
index_label | str 或 sequence,可选 | 自定义索引列的标签 |
startrow | int,默认 0 | 数据起始写入的行号(可用于合并表格) |
startcol | int,默认 0 | 数据起始写入的列号 |
engine | {‘xlsxwriter’, ‘openpyxl’, ‘xlwt’}, 可选 | 指定使用的引擎: - xlsxwriter : 支持样式、图表- openpyxl : 支持 .xlsx 格式读写- xlwt : 仅支持 .xls 格式(旧版) |
merge_cells | bool,默认 True | 是否合并多级索引/列标题单元格 |
inf_rep | str,默认 'inf' | 正负无穷的表示方式(inf , -inf ) |
freeze_panes | tuple of (rows, cols),可选 | 冻结窗格设置,如 (1, 1) 表示冻结第一行和第一列 |
storage_options | dict,可选 | 如果 path 是远程存储(如 S3),提供认证信息等选项 |
engine_kwargs | dict,可选 | 传递给底层引擎的关键字参数(如 xlsxwriter 的 options) |
✅ 示例及结果
示例 1:基础用法(默认参数)
import pandas as pd
# 创建一个简单的 DataFrame
df = pd.DataFrame({
'Name': ['Alice', 'Bob', 'Charlie'],
'Age': [25, 30, None],
'Salary': [70000, 80000, 90000]
})
# 写入 Excel 文件
df.to_excel('example.xlsx', index=False)
输出文件内容 (example.xlsx
):
Name | Age | Salary |
---|---|---|
Alice | 25.0 | 70000 |
Bob | 30.0 | 80000 |
Charlie | 90000 |
注意:
Age
列中的None
被替换为空字符串(默认行为)。
示例 2:自定义工作表名称 & 冻结窗格
# 自定义 sheet 名称并冻结第一行
df.to_excel('custom_sheet.xlsx', sheet_name='员工信息', freeze_panes=(1, 0), index=False)
输出:
- 工作表名为
员工信息
- 第一行被冻结,便于滚动查看大量数据时保持标题可见
示例 3:使用 xlsxwriter 引擎添加样式
from pandas.io.excel._xlsxwriter import XlsxWriter
# 使用 xlsxwriter 引擎并启用 bold 样式
with pd.ExcelWriter('styled.xlsx', engine='xlsxwriter') as writer:
df.to_excel(writer, sheet_name='Data', index=False)
# 获取 workbook 和 worksheet 对象
workbook = writer.book
worksheet = writer.sheets['Data']
# 设置标题加粗
bold_format = workbook.add_format({'bold': True})
worksheet.set_row(0, None, bold_format)
输出:
Data
工作表中,第一行(标题)显示为加粗字体
示例 4:从特定行列开始写入数据
# 在第3行第2列开始写入数据
df.to_excel('offset.xlsx', startrow=2, startcol=1, index=False)
输出:
- 数据从 C3 单元格开始写入,A1~B2 空白
示例 5:写入多个工作表
# 创建两个 DataFrame
df1 = pd.DataFrame({'A': [1, 2], 'B': [3, 4]})
df2 = pd.DataFrame({'X': [5, 6], 'Y': [7, 8]})
# 使用 ExcelWriter 写入多个 sheet
with pd.ExcelWriter('multi_sheets.xlsx') as writer:
df1.to_excel(writer, sheet_name='Sheet1', index=False)
df2.to_excel(writer, sheet_name='Sheet2', index=False)
输出:
Sheet1
包含 A、B 列数据Sheet2
包含 X、Y 列数据
示例 6:自定义浮点数格式
# 设置浮点数保留两位小数
df.to_excel('formatted.xlsx', float_format="%.2f", index=False)
输出:
- 所有浮点数列(如 Age)显示为两位小数:
Name | Age | Salary |
---|---|---|
Alice | 25.00 | 70000 |
Bob | 30.00 | 80000 |
Charlie | 90000 |
⚠️ 注意事项
- 推荐使用
xlsxwriter
或openpyxl
引擎,支持.xlsx
格式。 - 若需读取 Excel 文件,可使用
pd.read_excel()
。 - 多个 sheet 写入时,必须使用
ExcelWriter
上下文管理器。 - 冻结窗格功能在
xlsxwriter
中支持良好。 - 不建议使用
xlwt
引擎(仅支持.xls
,不支持新特性)。
🧰 安装依赖
pip install pandas openpyxl xlsxwriter
📝 总结
特性 | 说明 |
---|---|
方法名 | DataFrame.to_excel() |
主要用途 | 将 DataFrame 写入 Excel 文件 |
支持功能 | 自定义 sheet 名称、冻结窗格、浮点格式、多 sheet 写入等 |
常见场景 | 数据导出、报表生成、可视化前的数据准备 |
推荐引擎 | xlsxwriter (支持样式)、openpyxl (支持 .xlsx) |
输出形式 | Excel 文件(.xlsx) |