使用 to_excel() 方法将 pandas.DataFrame 写入(保存)为 Excel 文件(扩展名:.xlsx、.xls)。
这里,说明以下内容。
Excel文件的读取参考以下文章
另外,用 pandas 读写 csv 文件和 json 文件见以下文章。
to_excel() 在内部使用 openpyxl 和 xlwt 库。 openpyxl 用于编写 .xlsx(自 Excel 2007 以来的格式),xlwt 用于编写 .xls 文件(Excel 2003为止)。
两者都可以用 pip 安装。 (环境pip3)
$ pip install openpyxl
$ pip install xlwt
以下面的 pandas.DataFrame 为例。
import pandas as pd
print(pd.__version__)
# 1.2.2
df = pd.DataFrame([[11, 21, 31], [12, 22, 32], [31, 32, 33]],
index=['one', 'two', 'three'], columns=['a', 'b', 'c'])
print(df)
# a b c
# one 11 21 31
# two 12 22 32
# three 31 32 33
如果将路径指定为 to_excel() 方法的第一个参数,则如果文件不存在将创建一个新文件,如果文件存在则将其覆盖。注意覆盖时会删除原文件中的数据。稍后将描述将新工作表添加到现有文件的示例。 为参数 sheet_name 指定了工作表名称。如果省略,名称将为 Sheet1。
df.to_excel('data/dst/pandas_to_excel.xlsx', sheet_name='new_sheet_name')
如果不需要编写索引(行名)和列(列名),请将参数索引和标题设置为 False。
df.to_excel('data/dst/pandas_to_excel_no_index_header.xlsx',
index=False, header=False)
使用 ExcelWriter 对象,可以将多个 pandas.DataFrame 对象写入单独的工作表。
例如,准备另一个 pandas.DataFrame 对象。
df2 = df[['a', 'c']]
print(df2)
# a c
# one 11 31
# two 12 32
# three 31 33
指定 pandas.ExcelWriter() 的路径以生成 ExcelWriter 对象并将其指定为 to_excel() 方法的第一个参数。 使用 with 块更容易,因为您不需要调用 writer.save() 和 writer.close()。
with pd.ExcelWriter('data/dst/pandas_to_excel_multi.xlsx') as writer:
df.to_excel(writer, sheet_name='sheet1')
df2.to_excel(writer, sheet_name='sheet2')
如果在 pandas.ExcelWriter() 中设置参数 mode=‘a’,它将处于追加模式,您可以将 pandas.DataFrame 作为新工作表添加到现有 Excel 文件中。
with pd.ExcelWriter('data/dst/pandas_to_excel.xlsx', mode='a') as writer:
df.to_excel(writer, sheet_name='new_sheet1')
df2.to_excel(writer, sheet_name='new_sheet2')
如果你指定现有工作表名称,则会通过在工作表名称末尾添加以 1 开头的数字来添加新工作表。不会覆盖现有工作表。
如果要编辑/添加(更改单元格值,添加新单元格等),同时保持现有Excel文件表格的格式而不是添加新表格,直接用openpyxl操作很方便。