我知道如何将多个数据帧写入一个 Excel 中的不同工作表。
但现在我想在一个 Excel 中水平写入两个不同的数据框。
例如:
我知道的唯一方法是
pd.concat((df1.reset_index() , df2.reset_index(), axis=1).to_excel('1.xlsx')
但这并不方便。
原因:
- 连接两个 df 会打乱列的顺序,必须手动重新排序。
- 必须重置索引(df1 是日期时间索引,df2 是自定义字符串索引),这会导致显示效果难看。
- 调整位置很困难,如果我需要左侧放置一个数据框,右侧垂直放置两个数据框怎么办?
PS:使用 pd.concat
只是不方便
,因为需要付出很多努力才能使 Excel 看起来漂亮。
我还尝试使用可以分配startcol
的pd.ExcelWriter
:
工作 1:
file_name = 'xxx.xlsx' writer = pd.ExcelWriter(file_name, engine='xlsxwriter', datetime_format='yyyy-mm-dd', date_format='yyyy-mm-dd') df1.to_excel(writer, sheet_name=sheet_name, startrow=0 , startcol=0)
工作 2
file_name = 'xxx.xlsx' writer = pd.ExcelWriter(file_name, engine='xlsxwriter', datetime_format='yyyy-mm-dd', date_format='yyyy-mm-dd') df2.to_excel(writer, sheet_name=sheet_name, startrow=0 , startcol=df1.shape[1]+2)
但这会覆盖 Excel ....
我希望有一种简单的方法可以在 startrow, startcol
位置写入数据帧而不覆盖文件?
最佳答案
在 df1 和 df2 中创建列,并将值作为行号。这样您将保留两个数据帧的顺序。
2)合并步骤一中创建的列上的两个数据框
3)将其推向excel
df1['key']= df1.reset_index().index
df2['key'] = df2.reset_index().index
pd.merge(df1, df2, how='outer',on='key').to_excel('1.xlsx')
关于python - 如何将多个数据框写入一张 Excel 工作表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52870220/