如何使用Python Pandas将多个DataFrame写入Excel同工作表的不同行?
将多个Pandas DataFrame写入同一张Excel工作表的不同行
嘿,我来帮你搞定这个需求——把多个DataFrame放到同一张Excel工作表的不同行,而不是分散在不同工作表里。这里有两种实用的方法,你可以根据自己的需求来选:
方法1:用startrow参数精准控制位置
这个方法适合你想给不同DataFrame之间留空行、或者精确控制每个块起始位置的场景。核心是利用to_excel()的startrow参数,指定每个DataFrame开始写入的行号:
import pandas as pd # 你的原始DataFrame生成逻辑 df8 = pd.DataFrame(item1(doc)) df9 = pd.DataFrame(item2(doc)) df10 = pd.DataFrame(item3(doc)) # 初始化ExcelWriter writer = pd.ExcelWriter('m1.xlsx', engine='xlsxwriter') # 第一个DataFrame从第0行开始(默认位置) df8.to_excel(writer, sheet_name='combined', startrow=0) # 第二个DataFrame从df8的行数+2行开始(留1行空行分隔,更易读) # 设置header=False避免重复写入列名 df9.to_excel(writer, sheet_name='combined', startrow=len(df8) + 2, header=False) # 第三个DataFrame从df9的结束行+2行开始 df10.to_excel(writer, sheet_name='combined', startrow=len(df8) + len(df9) + 4, header=False) # 保存文件 writer.save()
关键细节:
startrow:指定DataFrame写入的起始行索引(从0开始计数)header=False:如果后续DataFrame和第一个列名一致,关闭重复列名的写入- 加空行(
len(df8)+2)是为了让不同模块的数据更清晰,你也可以根据需要调整间隔行数
方法2:合并DataFrame后一次性写入
如果不需要复杂的位置控制,只是想简单把多个DataFrame堆叠起来,直接用pd.concat()合并后写入更简洁:
import pandas as pd df8 = pd.DataFrame(item1(doc)) df9 = pd.DataFrame(item2(doc)) df10 = pd.DataFrame(item3(doc)) # 合并所有DataFrame,ignore_index=True重置行索引 combined_df = pd.concat([df8, df9, df10], ignore_index=True) writer = pd.ExcelWriter('m1.xlsx', engine='xlsxwriter') combined_df.to_excel(writer, sheet_name='combined') writer.save()
进阶:给每个DataFrame加标题分隔
如果想在每个DataBlock前加个标题(比如"item1"、"item2"),可以手动插入标题行和空行:
import pandas as pd def create_title_row(title): # 创建一个只有标题的单行DataFrame return pd.DataFrame({'': [title]}) df8 = pd.DataFrame(item1(doc)) df9 = pd.DataFrame(item2(doc)) df10 = pd.DataFrame(item3(doc)) # 组装所有部分:标题+数据+空行 content_parts = [ create_title_row('item1'), df8, pd.DataFrame(), # 空行分隔 create_title_row('item2'), df9, pd.DataFrame(), create_title_row('item3'), df10 ] # 合并所有部分 combined_df = pd.concat(content_parts, ignore_index=True) writer = pd.ExcelWriter('m1.xlsx', engine='xlsxwriter') combined_df.to_excel(writer, sheet_name='combined', index=False) writer.save()
最后提醒一下:确保你已经安装了xlsxwriter引擎,如果没装的话,执行pip install xlsxwriter即可。
内容的提问来源于stack exchange,提问作者Programmer_nltk
相关产品推荐
相关产品推荐

