python - 如何将多个数据框写入一张 Excel 工作表?

标签 python excel pandas dataframe

我知道如何将多个数据帧写入一个 Excel 中的不同工作表。

但现在我想在一个 Excel 中水平写入两个不同的数据框。

例如:

enter image description here

我知道的唯一方法是

pd.concat((df1.reset_index() , df2.reset_index(), axis=1).to_excel('1.xlsx') 

但这并不方便。

原因:

  1. 连接两个 df 会打乱列的顺序,必须手动重新排序。
  2. 必须重置索引(df1 是日期时间索引,df2 是自定义字符串索引),这会导致显示效果难看。
  3. 调整位置很困难,如果我需要左侧放置一个数据框,右侧垂直放置两个数据框怎么办?

PS:使用 pd.concat 只是不方便,因为需要付出很多努力才能使 Excel 看起来漂亮。

我还尝试使用可以分配startcolpd.ExcelWriter:

  1. 工作 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. 工作 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/

相关文章:

java - Java REST 客户端接收和保存 excel 响应(字节数组)时出错

python - 如何使用 Python 的单元测试断言数据库错误?

python - 构建 Python 时出现 QuantLib 1.9 fatal error

python - Selenium/BeautifulSoup - Python - 循环遍历多个页面

python - 将 MySQL 数据库凭据存储在一个文件中,然后在主脚本中调用该文件

python - 我可以根据另一列中值的更改时间创建新列吗?

python-3.x - "BokehUserWarning: ColumnDataSource' s 列的长度必须相同”

python - 在python中导入文本文件

excel - 如何对不包含特定值的单元格求和

VBA Excel 2010 - 如何将宏分配给使用宏创建的命令按钮