如何将Pandas处理后的数据写回到Excel文件中?

在 Pandas 里,可运用 DataFrame.to_excel() 方法把处理好的数据写回到 Excel 文件。下面将从不同场景出发,详细介绍该方法的使用。

1. 基本写入操作

此为最简单的写入方式,会把 DataFrame 的数据写入到一个新的 Excel 文件里。
 
import pandas as pd

# 创建示例 DataFrame
data = {
    '姓名': ['张三', '李四', '王五'],
    '年龄': [25, 30, 35],
    '城市': ['北京', '上海', '广州']
}
df = pd.DataFrame(data)

# 指定要保存的文件路径
file_path = 'basic_write.xlsx'
# 执行写入操作
df.to_excel(file_path, index=False)

在上述代码中,index=False 表明不保存 DataFrame 的行索引。若不设置该参数,默认会保存行索引。

2. 写入到指定工作表

当需要把数据写入到 Excel 文件的特定工作表时,可通过 sheet_name 参数来指定工作表名称。若该工作表不存在,会自动创建。
 
file_path = 'specific_sheet.xlsx'
sheet_name = '员工信息'
df.to_excel(file_path, sheet_name=sheet_name, index=False)

3. 写入多个 DataFrame 到不同工作表

可以使用 ExcelWriter 对象把多个 DataFrame 写入到同一个 Excel 文件的不同工作表中。
# 创建另一个示例 DataFrame
data2 = {
    '部门': ['技术部', '销售部', '财务部'],
    '人数': [10, 20, 15]
}
df2 = pd.DataFrame(data2)

file_path = 'multi_sheets.xlsx'
with pd.ExcelWriter(file_path) as writer:
    df.to_excel(writer, sheet_name='员工信息', index=False)
    df2.to_excel(writer, sheet_name='部门信息', index=False)

这里借助 with 语句创建 ExcelWriter 对象,在 with 代码块中,分别将两个 DataFrame 写入到不同的工作表。

4. 追加数据到已有的 Excel 文件

若要把数据追加到现有的 Excel 文件的某个工作表中,可先读取原文件,再把新数据追加到 DataFrame 里,最后重新写入文件。
 
# 假设已有一个 Excel 文件 existing_file.xlsx,包含一个工作表 'Sheet1'
existing_file = 'existing_file.xlsx'
# 读取原文件
existing_df = pd.read_excel(existing_file, sheet_name='Sheet1')
# 追加新数据
combined_df = pd.concat([existing_df, df], ignore_index=True)
# 将合并后的数据写回文件
combined_df.to_excel(existing_file, sheet_name='Sheet1', index=False)

5. 设置 Excel 文件格式

在写入 Excel 文件时,还能设置一些格式,例如冻结窗格、设置表头样式等,这需要结合 openpyxl 库来实现。
 
from openpyxl import load_workbook
from openpyxl.styles import Font

file_path = 'styled_file.xlsx'
df.to_excel(file_path, index=False)

# 加载工作簿
wb = load_workbook(file_path)
ws = wb.active

# 设置表头字体样式
header_font = Font(bold=True)
for cell in ws[1]:
    cell.font = header_font

# 冻结首行
ws.freeze_panes = ws['A2']

# 保存工作簿
wb.save(file_path)

上述代码在写入数据后,使用 openpyxl 库加载工作簿,设置表头字体为粗体,并冻结首行,最后保存工作簿

posted on 2025-03-19 09:08  数据派  阅读(633)  评论(0)    收藏  举报