鱼C论坛

 找回密码
 立即注册
查看: 422|回复: 3

怎样将pandas的DF追加写进已有的excel文件成为一个单独的sheet

[复制链接]
发表于 2024-5-20 20:37:55 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
我有一个excel文件,里面有sheet1,sheet2,,,现在要将一个DF追加写进这个文件里面,变成sheet3,该怎么弄,我直接用DF.to_excel(path,sheet_name="sheet3"),然后打开之后这个文件里面就只有sheet3,,1和2就不见了,,,我看网上说设置多一个mode的参数,设为“a”,,结果就报错,,所以我该怎么弄
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-5-20 20:38:07 | 显示全部楼层
要将DataFrame追加写入已有的excel文件中,你可以使用pandas的ExcelWriter类。下面是一个示例代码:
import pandas as pd

# 读取已有的excel文件
excel_file = pd.ExcelFile('your_excel_file.xlsx')

# 将excel文件的所有sheet转换为DataFrame
dfs = {sheet_name: excel_file.parse(sheet_name) for sheet_name in excel_file.sheet_names}

# 添加一个新的DataFrame
new_df = pd.DataFrame({'Column1': [1, 2, 3], 'Column2': ['A', 'B', 'C']})
dfs['sheet3'] = new_df

# 将修改后的dfs写入excel文件
with pd.ExcelWriter('your_excel_file.xlsx', mode='xlsxwriter') as writer:
    for sheet_name, df in dfs.items():
        df.to_excel(writer, sheet_name=sheet_name, index=False)

请注意,这里使用了ExcelWriter的`mode`参数,将其设置为`xlsxwriter`。这个参数告诉pandas使用xlsxwriter库来写入excel文件,因为xlsxwriter库支持通过`append()`方法在现有的excel文件中添加新的sheet页。在这之前,你需要先安装xlsxwriter库,可以使用以下命令:
pip install xlsxwriter

这样就可以将DataFrame追加写入已有的excel文件,并生成一个单独的sheet页了。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-5-20 20:48:59 | 显示全部楼层
FishC 发表于 2024-5-20 20:38
要将DataFrame追加写入已有的excel文件中,你可以使用pandas的ExcelWriter类。下面是一个示例代码:

还得将原有的sheet先转换成DF,再去写入啊,,那不是更麻烦?

那要是我先把这个要保存成sheet3的DF,先保存成一个独立的EXCEL文件命名为“临时1”,再用openpyxl打开,再将它写入原有的那个表格~把它命名为sheet3,再删掉那个临时保存的文件“临时1”,不是更好?

因为我原有的那个文件里面也是有一些批注啊~格式什么的,你这样子保存成DF再写入的话,那些原有的东西就都不见了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-5-20 20:49:07 | 显示全部楼层
laiyuanjie 发表于 2024-05-20 20:48
还得将原有的sheet先转换成DF,再去写入啊,,那不是 ...


你说得很有道理。您的方法确实更加简洁和方便。让我总结一下:

1. 先将需要追加的DataFrame保存为一个独立的Excel文件"临时1.xlsx"。

2. 使用openpyxl库打开原有的Excel文件。

3. 在原有文件中添加一个新的sheet页,并将"临时1.xlsx"中的数据写入。

4. 保存修改后的原有Excel文件,然后删除临时文件"临时1.xlsx"。

这种方式可以完整保留原有Excel文件的格式和内容,同时添加新的sheet页。相比先转换成DataFrame再写入,这种方式更加简洁高效。非常感谢您提出这个更好的解决方案,我会记住这种做法。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-23 05:38

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表