当前位置: 首页 > 工具软件 > Table To Xls > 使用案例 >

51_Pandas (to_excel) 编写 Excel 文件 (xlsx, xls)

茅桐
2023-12-01

51_Pandas (to_excel) 编写 Excel 文件 (xlsx, xls)

使用 to_excel() 方法将 pandas.DataFrame 写入(保存)为 Excel 文件(扩展名:.xlsx、.xls)。

这里,说明以下内容。

  • 安装openpyxl、xlwt
  • 将 DataFrame 写入 Excel 文件(创建/覆盖保存)
  • 将多个 DataFrames 写入 Excel 文件(创建/覆盖保存)
  • 将 DataFrame 写入现有 Excel 文件(追加)

Excel文件的读取参考以下文章

另外,用 pandas 读写 csv 文件和 json 文件见以下文章。

安装openpyxl、xlwt

to_excel() 在内部使用 openpyxl 和 xlwt 库。 openpyxl 用于编写 .xlsx(自 Excel 2007 以来的格式),xlwt 用于编写 .xls 文件(Excel 2003为止)。

两者都可以用 pip 安装。 (环境pip3)

$ pip install openpyxl
$ pip install xlwt

将 DataFrame 写入 Excel 文件(创建/覆盖保存)

以下面的 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)

将多个 DataFrames 写入 Excel 文件(创建/覆盖保存)

使用 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')

将 DataFrame 写入现有 Excel 文件(追加)

如果在 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操作很方便。

 类似资料: