Pandas DataFrame DataFrame.to_excel() 函数

Jinku Hu 2023年1月30日
  1. pandas.DataFrame.to_excel() 语法
  2. 示例代码:Pandas DataFrame.to_excel()
  3. 示例代码:Pandas DataFrame.to_excel()ExcelWriter
  4. 示例代码:Pandas DataFrame.to_excel 来追加到一个现有的 Excel 文件中
  5. 示例代码:Pandas DataFrame.to_excel 写入 Excel 中的多页
  6. 示例代码: 带有参数 header 的 Pandas DataFrame.to_excel
  7. 示例代码: 当 index=False 时的 Pandas DataFrame.to_excel
  8. 示例代码:Pandas DataFrame.to_excel 参数为 index_label
  9. 示例代码:Pandas DataFrame.to_excelfloat_format 参数
  10. 示例代码:Pandas DataFrame.to_excel 参数为 freeze_panes
Pandas DataFrame DataFrame.to_excel() 函数

Python Pandas DataFrame.to_excel(values) 函数将 DataFrame 数据转储到 Excel 文件中,单页或多页中。

pandas.DataFrame.to_excel() 语法

DataFrame.isin(
    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,
    encoding=None,
    inf_rep="inf",
    verbose=True,
    freeze_panes=None,
)

参数

excel_writer Excel 文件路径或现有的 pandas.ExcelWriter
sheet_name DataFrame 转储到的工作表名称
na_rep 空值的表示方法
float_format 浮点数的格式
header 指定生成的 Excel 文件的标题
index 如果为 True,将 DataFrame index 写入 Excel
index_label 索引列的列标签
startrow 将数据写入 Excel 的左上角单元格行。
默认为 0
startcol 将数据写入 Excel 的左上角单元格。
默认为 0
engine 可选参数,用于指定要使用的引擎。openyxlxlswriter
merge_cells 合并 MultiIndex 到合并的单元格中
encoding 输出 Excel 文件的编码。只有当使用 xlwt 写入器时才需要,其他写入器原生支持 Unicode
inf_rep 无限大的表示方法。默认为 inf
verbose 如果为 True,错误日志包含更多的信息
freeze_panes 指定冻结窗格的最底部和最右侧。它是基于一的,但不是基于零的

返回值

None

示例代码:Pandas DataFrame.to_excel()

import pandas as pd

dataframe= pd.DataFrame({'Attendance': [60, 100, 80, 78, 95],
                    'Name': ['Olivia', 'John', 'Laura', 'Ben', 'Kevin'],
                    'Marks': [90, 75, 82, 64, 45]})

dataframe.to_excel('test.xlsx')

调用者 DataFrame

   Attendance    Name  Marks
0          60  Olivia     90
1         100    John     75
2          80   Laura     82
3          78     Ben     64
4          95   Kevin     45

test.xlsx 文件被创建。

Pandas DataFrame to_excel

示例代码:Pandas DataFrame.to_excel()ExcelWriter

上面的例子使用文件路径作为 excel_writer,我们也可以使用 pandas.Excelwriter 来指定 DataFrame 转储的 excel 文件。

import pandas as pd

dataframe = pd.DataFrame(
    {
        "Attendance": [60, 100, 80, 78, 95],
        "Name": ["Olivia", "John", "Laura", "Ben", "Kevin"],
        "Marks": [90, 75, 82, 64, 45],
    }
)

with pd.ExcelWriter("test.xlsx") as writer:
    dataframe.to_excel(writer)

示例代码:Pandas DataFrame.to_excel 来追加到一个现有的 Excel 文件中

import pandas as pd
import openpyxl

dataframe = pd.DataFrame(
    {
        "Attendance": [60, 100, 80, 78, 95],
        "Name": ["Olivia", "John", "Laura", "Ben", "Kevin"],
        "Marks": [90, 75, 82, 64, 45],
    }
)

with pd.ExcelWriter("test.xlsx", mode="a", engine="openpyxl") as writer:
    dataframe.to_excel(writer, sheet_name="new")

我们应该指定引擎为 openpyxl,而不是默认的 xlsxwriter;否则,我们会得到 xlswriter 不支持 append 模式的错误信息。

ValueError: Append mode is not supported with xlsxwriter!

因为 openpyxl 不属于 pandas 的一部分,所以要安装和导入。

pip install openpyxl

Pandas DataFrame to_excel - 附加工作表

示例代码:Pandas DataFrame.to_excel 写入 Excel 中的多页

import pandas as pd

dataframe = pd.DataFrame(
    {
        "Attendance": [60, 100, 80, 78, 95],
        "Name": ["Olivia", "John", "Laura", "Ben", "Kevin"],
        "Marks": [90, 75, 82, 64, 45],
    }
)

with pd.ExcelWriter("test.xlsx") as writer:
    dataframe.to_excel(writer, sheet_name="Sheet1")
    dataframe.to_excel(writer, sheet_name="Sheet2")

它将 DataFrame 对象转储到 Sheet1Sheet2

如果你指定了 columns 参数,你也可以将不同的数据写入多个表。

import pandas as pd

dataframe = pd.DataFrame(
    {
        "Attendance": [60, 100, 80, 78, 95],
        "Name": ["Olivia", "John", "Laura", "Ben", "Kevin"],
        "Marks": [90, 75, 82, 64, 45],
    }
)

with pd.ExcelWriter("test.xlsx") as writer:
    dataframe.to_excel(writer, columns=["Name", "Attendance"], sheet_name="Sheet1")
    dataframe.to_excel(writer, columns=["Name", "Marks"], sheet_name="Sheet2")

示例代码: 带有参数 header 的 Pandas DataFrame.to_excel

import pandas as pd

dataframe = pd.DataFrame(
    {
        "Attendance": [60, 100, 80, 78, 95],
        "Name": ["Olivia", "John", "Laura", "Ben", "Kevin"],
        "Marks": [90, 75, 82, 64, 45],
    }
)

with pd.ExcelWriter("test.xlsx") as writer:
    dataframe.to_excel(writer, header=["Student", "First Name", "Score"])

在创建的 Excel 文件中,默认的标题与 DataFrame 的列名相同。header 参数指定新的标题,以取代默认的标题。

Pandas DataFrame to_excel - 更改头名

示例代码: 当 index=False 时的 Pandas DataFrame.to_excel

import pandas as pd

dataframe = pd.DataFrame(
    {
        "Attendance": [60, 100, 80, 78, 95],
        "Name": ["Olivia", "John", "Laura", "Ben", "Kevin"],
        "Marks": [90, 75, 82, 64, 45],
    }
)

with pd.ExcelWriter("test.xlsx") as writer:
    dataframe.to_excel(writer, index=False)

index = False 指定 DataFrame.to_excel() 生成一个没有头行的 Excel 文件。

示例代码:Pandas DataFrame.to_excel 参数为 index_label

import pandas as pd

dataframe = pd.DataFrame(
    {
        "Attendance": [60, 100, 80, 78, 95],
        "Name": ["Olivia", "John", "Laura", "Ben", "Kevin"],
        "Marks": [90, 75, 82, 64, 45],
    }
)

with pd.ExcelWriter("test.xlsx") as writer:
    dataframe.to_excel(writer, index_label="id")

index_label='id'设置索引列的列名为 id

Pandas DataFrame to_excel - 设置索引标签

示例代码:Pandas DataFrame.to_excelfloat_format 参数

import pandas as pd

dataframe = pd.DataFrame(
    {
        "Attendance": [60, 100, 80, 78, 95],
        "Name": ["Olivia", "John", "Laura", "Ben", "Kevin"],
        "Marks": [90, 75, 82, 64, 45],
    }
)

with pd.ExcelWriter("test.xlsx") as writer:
    dataframe.to_excel(writer, float_format="%.1f")

float_format="%.1f"指定浮点数小数点后有两位。

示例代码:Pandas DataFrame.to_excel 参数为 freeze_panes

import pandas as pd

dataframe = pd.DataFrame(
    {
        "Attendance": [60, 100, 80, 78, 95],
        "Name": ["Olivia", "John", "Laura", "Ben", "Kevin"],
        "Marks": [90, 75, 82, 64, 45],
    }
)

with pd.ExcelWriter("test.xlsx") as writer:
    dataframe.to_excel(writer, freeze_panes=(1, 1))

freeze_panes=(1,1) 指定 excel 文件有冻结的顶行和冻结的第一列。

Pandas DataFrame to_excel - freeze_panes(冻结窗格)

作者: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

DelftStack.com 创始人。Jinku 在机器人和汽车行业工作了8多年。他在自动测试、远程测试及从耐久性测试中创建报告时磨练了自己的编程技能。他拥有电气/电子工程背景,但他也扩展了自己的兴趣到嵌入式电子、嵌入式编程以及前端和后端编程。

LinkedIn Facebook

相关文章 - Pandas DataFrame