13. Pandas :使用 to_excel 方法写入 Excel文件

一 to_excel 方法的相关参数

用它来指定要将 DataFrame 写入哪些工作表的哪些单元格,以及是否需要包含列标题和 DataFrame 索引。如何处理特殊值(如 np.nan 和 np.inf)。

1.指定工作表和单元格

sheet_name:指定将 DataFrame 写入的工作表名称。若不存在,pandas 会创建一个新的工作表。

python 复制代码
 sheet_name="MySheet",   # 写入的工作表名称

startrow 和 startcol:指定从哪个行和列开始写入数据。在工作表中指定一个特定的位置来放置数据。

python 复制代码
startrow=2,             # 从第三行开始写入(索引从0开始)
startcol=1,             # 从第二列开始写入(索引从0开始)

2.是否包含列标题和索引

header:布尔值,指定是否写入列标题。默认是 True。

index:布尔值,指定是否写入行索引。默认是 True。

python 复制代码
header=True,            # 包含列标题
index=False,            # 不包含行索引

3.处理特殊值

na_rep:指定如何将 NaN 值表示在 Excel 中。默认是空字符串 ""。

inf_rep:指定如何将正无穷大(np.inf)和负无穷大(-np.inf)表示在 Excel 中。默认是 "inf" 和 "-inf"。

python 复制代码
na_rep="NA",            # 将 NaN 表示为 "NA"
inf_rep="Infinity"      # 将 inf 和 -inf 表示为 "Infinity"

4.示例代码1

python 复制代码
import pandas as pd
import numpy as np
import datetime as dt

data=[[dt.datetime(2020,1,1, 10, 13), 2.222, 1, True],
[dt.datetime(2020,1,2), np.nan, 2, False],
[dt.datetime(2020,1,2), np.inf, 3, True]]

df = pd.DataFrame(data=data,
columns=["Dates", "Floats", "Integers", "Booleans"])

df.index.name="index"
print(df)

df.to_excel("written_with_pandas.xlsx", 
sheet_name="Output",
startrow=1, 
startcol=1, 
index=True, 
header=True,
na_rep="<NA>", 
inf_rep="<INF>")

1.导入库

python 复制代码
import datetime as dt

datetime:用于处理日期和时间的库。

2.创建数据

python 复制代码
data = [
    [dt.datetime(2020, 1, 1, 10, 13), 2.222, 1, True],
    [dt.datetime(2020, 1, 2), np.nan, 2, False],
    [dt.datetime(2020, 1, 2), np.inf, 3, True]
]

data 是一个列表,其中每个子列表代表 DataFrame 的一行。

每一行包含四个值:一个日期时间对象、一个浮点数、一个整数和一个布尔值。

第二行包含一个 NaN 值(np.nan),表示缺失数据。

第三行包含一个正无穷大值(np.inf)。

3.创建 DataFrame

python 复制代码
df = pd.DataFrame(data=data, 
columns=["Dates", "Floats", "Integers", "Booleans"])

df.index.name = "index"

4.写入 Excel 文件

python 复制代码
df.to_excel(
    "written_with_pandas.xlsx",
    sheet_name="Output",
    startrow=1,
    startcol=1,
    index=True,
    header=True,
    na_rep="<NA>",
    inf_rep="<INF>"
)

to_excel 方法用于将 DataFrame 写入 Excel 文件。

"written_with_pandas.xlsx":输出的 Excel 文件名。

sheet_name="Output":将数据写入名为 "Output" 的工作表。

startrow=1 和 startcol=1:数据将从 Excel 文件的第二行和第二列开始写入(索引从 0 开始)。

index=True:包括 DataFrame 的索引。

header=True:包括列标题。

na_rep="<NA>":将 NaN 值替换为 "<NA>"。

inf_rep="<INF>":将 np.inf 和 -np.inf 替换为 "<INF>"。

5.示例代码2

用 with

python 复制代码
import pandas as pd
import numpy as np

# 创建一个示例 DataFrame
data = {
    'A': [1, 2, np.nan, 4],
    'B': [np.inf, 5, 6, -np.inf],
    'C': [7, 8, 9, 10]
}
df = pd.DataFrame(data)

# 将 DataFrame 写入 Excel 文件
with pd.ExcelWriter("output.xlsx") as writer:
    df.to_excel(
        writer,
        sheet_name="MySheet",   # 写入的工作表名称
        startrow=2,             # 从第三行开始写入(索引从0开始)
        startcol=1,             # 从第二列开始写入(索引从0开始)
        header=True,            # 包含列标题
        index=False,            # 不包含行索引
        na_rep="NA",            # 将 NaN 表示为 "NA"
        inf_rep="Infinity"      # 将 inf 和 -inf 表示为 "Infinity"
    )

二 to_excel 方法和 ExcelClass 类

可以将多个 DataFrame 写入同一张或多张工作表。
分 3 次将同一个 DataFrame 写入工作表,前两次写入了工作表 1 的两个位置,第三次写入了工作表 2:

将 ExcelClass 用作了上下文管理器,因此当文件离开上下文管理器时(也就是离开由缩进定义的代码块时)会被自动写入磁盘。如果不像这样写的话,则必须显式地调用 writer.save() 。

相关推荐
应用市场9 分钟前
用本机跑的开源音乐模型,给安卓小游戏做 20 秒无缝循环背景音乐
android·python·游戏开发·soundpool·音频处理
小lo想吃棒棒糖10 分钟前
把 启元机器人Q1 的训练搬到昇腾 910B:从 MuJoCo 到 PPO 的一次完整迁移
人工智能·python·机器人·昇腾·具身智能
企业数字化笔记14 分钟前
表单发布前怎么验收?版本引用、字段兼容和历史数据回归
android·数据挖掘·回归
IT研究室15 分钟前
最新大数据毕业设计选题推荐-基于大数据的Kaggle竞赛团队协作模式与效能可视化分析-大数据-Spark-Hadoop-Bigdata
大数据·spark·课程设计
weixin_3077791318 分钟前
RAG 级联失效分析——面试中的错误归因艺术
人工智能·python·面试·职场和发展
骑着蜗牛撵大象32719 分钟前
闲鱼捡漏自动化:关键词加价格上限先粗筛,AI 大模型再做第一轮判定
大数据·人工智能·ai·自动化·二手交易·闲鱼·关键词监控
AI创界者20 分钟前
Python 进阶实战(十八):API 网关安全与异步鉴权中间件 —— 基于 AsyncIO 的 JWT 零拷贝验权与动态黑名单过滤
人工智能·python·aigc
渣渣盟21 分钟前
Flink 状态管理深度剖析:从 KeyedState 到 RocksDB,状态如何存储、恢复与扩缩容
android·大数据·flink
Data-Miner26 分钟前
不本地部署,大模型怎么安全用?
大数据·人工智能·安全
前端精髓29 分钟前
学会调用Qwen3.7-通用文本向量
python