看过来
《pandas 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gairuo123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
pandas
的 to_excel()
方法用于将 DataFrame
对象导出为 Excel 文件。该方法非常灵活,可以指定多种参数来控制导出的格式。to_excel()
方法主要应用于 DataFrame
数据类型。
要将单个对象写入Excel.xlsx文件,只需指定目标文件名。要写入多个工作表,需要使用目标文件名创建ExcelWriter对象,并在文件中指定要写入的工作表。
通过指定唯一的sheet_name,可以写入多张图纸。将所有数据写入文件后,有必要保存更改。请注意,使用已存在的文件名创建ExcelWriter对象将导致现有文件的内容被擦除。
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: 类似路径的对象、文件对象或 ExcelWriter
对象
ExcelWriter
对象。如果提供的是文件路径,文件会被自动创建。sheet_name: str
,默认值为 'Sheet1'
na_rep: str
,默认值为 ''
float_format: str
,可选
float_format="%.2f"
将 0.1234 格式化为 0.12。columns: 序列或字符串列表,可选
header: bool
或 字符串列表,默认值为 True
index: bool
,默认值为 True
index_label: str
或 序列,可选
header
和 index
为 True
,则使用索引名。startrow: int
,默认值为 0
startcol: int
,默认值为 0
engine: str
,可选
'openpyxl'
或 'xlsxwriter'
。merge_cells: bool
,默认值为 True
inf_rep: str
,默认值为 'inf'
freeze_panes: tuple
,长度为 2,可选
storage_options: dict
,可选
s3://
、gcs://
等 URL 的相关选项。engine_kwargs: dict
,可选
DataFrame
导出为指定路径的 Excel 文件。创建、写入和保存工作簿:
df1 = pd.DataFrame([['a', 'b'], ['c', 'd']],
index=['row 1', 'row 2'],
columns=['col 1', 'col 2'])
df1.to_excel("output.xlsx")
要指定 sheet name,请执行以下操作:
df1.to_excel("output.xlsx",
sheet_name='Sheet_name_1')
如果要写入工作簿中的多个工作表,则必须指定ExcelWriter对象:
df2 = df1.copy()
with pd.ExcelWriter('output.xlsx') as writer:
df1.to_excel(writer, sheet_name='Sheet_name_1')
df2.to_excel(writer, sheet_name='Sheet_name_2')
ExcelWriter还可以用于附加到现有的Excel文件:
with pd.ExcelWriter('output.xlsx',
mode='a') as writer:
df1.to_excel(writer, sheet_name='Sheet_name_3')
要设置用于写入Excel文件的库,可以传递engine关键字(默认引擎会根据文件扩展名自动选择):
df1.to_excel('output1.xlsx', engine='xlsxwriter')
import pandas as pd
# 构造示例数据
df = pd.DataFrame({
'Name': ['Alice', 'Bob', 'Charlie'],
'Age': [25, 30, 35],
'Salary': [50000, 60000, 70000]
})
# 导出为 Excel 文件
df.to_excel('output.xlsx', index=False)
# 输出内容为文件:output.xlsx
"""
Excel文件中 "Sheet1" 工作表的内容为:
+--------+-----+--------+
| Name | Age | Salary |
+--------+-----+--------+
| Alice | 25 | 50000 |
| Bob | 30 | 60000 |
| Charlie| 35 | 70000 |
+--------+-----+--------+
"""
import pandas as pd
# 构造示例数据
df = pd.DataFrame({
'Name': ['Alice', 'Bob', None],
'Age': [25, 30, 35],
'Salary': [50000.123, None, 70000.789]
})
# 导出为 Excel 文件,缺失值表示为 'N/A',浮点数保留两位小数
df.to_excel('output_custom.xlsx', na_rep='N/A', float_format="%.2f")
# 输出内容为文件:output_custom.xlsx
"""
Excel文件中 "Sheet1" 工作表的内容为:
+--------+-----+--------+
| Name | Age | Salary |
+--------+-----+--------+
| Alice | 25 | 50000.12|
| Bob | 30 | N/A |
| N/A | 35 | 70000.79|
+--------+-----+--------+
"""
import pandas as pd
# 构造示例数据
df = pd.DataFrame({
'Name': ['Alice', 'Bob', 'Charlie'],
'Age': [25, 30, 35],
'Salary': [50000, 60000, 70000]
})
# 导出到 "MySheet" 工作表的 (2, 1) 单元格位置开始
df.to_excel('output_position.xlsx', sheet_name='MySheet', startrow=2, startcol=1)
# 输出内容为文件:output_position.xlsx
"""
Excel文件中 "MySheet" 工作表的内容为:
+----+---+--------+-----+--------+
| | | Name | Age | Salary |
+----+---+--------+-----+--------+
| 2 | 1 | Alice | 25 | 50000 |
| 3 | 1 | Bob | 30 | 60000 |
| 4 | 1 | Charlie| 35 | 70000 |
+----+---+--------+-----+--------+
"""
import pandas as pd
# 构造示例数据
df1 = pd.DataFrame({
'Name': ['Alice', 'Bob'],
'Age': [25, 30]
})
df2 = pd.DataFrame({
'Product': ['Book', 'Pen'],
'Price': [10, 1.5]
})
# 使用 ExcelWriter 导出到同一个文件的不同工作表
with pd.ExcelWriter('output_multisheet.xlsx') as writer:
df1.to_excel(writer, sheet_name='People', index=False)
df2.to_excel(writer, sheet_name='Products', index=False)
# 输出内容为文件:output_multisheet.xlsx
"""
Excel文件包含两个工作表:
1. "People" 工作表:
+--------+-----+
| Name | Age |
+--------+-----+
| Alice | 25 |
| Bob | 30 |
+--------+-----+
2. "Products" 工作表:
+---------+-------+
| Product | Price |
+---------+-------+
| Book | 10.0 |
| Pen | 1.5 |
+---------+-------+
"""
通过这些示例,我们可以看到 to_excel()
方法在数据导出方面的强大功能和灵活性,特别是在处理多表导出和定制化格式时非常有用。
更新时间:2024-08-13 15:09:01 标签:pandas python excel 导出