首页 > 解决方案 > Python:如何将数据框导出到现有 Excel 工作表但不创建新工作表

问题描述

我想将我的数据框导出到 Python 中现有 Excel 工作表中的指定列,我尝试了不同的方法,但它们不起作用。我已经导出df1到一个名为“IR delta”的 excel 表,现在我想导出df2到与df1运行一些代码生成df2. 但是,创建了 excel 表“IR delta1”,而不是导出相同的表“IR delta”。有人可以帮忙吗?非常感谢!

df1

  Qualifier                   Currency Risk Group  Delta Concentration threshold (USD/bp)   CR
0       AUD  Regular volatility, less well-traded                                41000000  1.0
1       CHF  Regular volatility, less well-traded                                41000000  1.0
2       CNY                       High volatility                                31000000  1.0
3       EUR       Regular volatility, well-traded                               220000000  1.0

df2

   Qualifier      Curve Tenor        RiskType  Risk Weight   CR            WS
0        AUD    Libor3m    1m    Risk_IRCurve          107    1  2.140000e+08
1        AUD    Libor3m    2y    Risk_IRCurve           53    1 -1.060000e+08
2        AUD    Libor3m    6m    Risk_IRCurve           71    1  2.130000e+08
3        CHF    Libor6m   15y    Risk_IRCurve           50    1 -2.000000e+08
4        CHF    Libor6m   20y    Risk_IRCurve           54    1  5.400000e+08
5        CHF    Libor6m   30y    Risk_IRCurve           63    1  7.560000e+08

请在下面查看我的代码:

writer = pd.ExcelWriter(Results, engine = 'openpyxl')
writer.book = book

df1.to_excel(writer, sheet_name='IR delta', startrow=0, index=False)
writer.save()
writer.close()

此时我已导出df1到 Excel 表“IR delta”。现在我想导出df2到同一张工作表但不创建新工作表。然而df2被导出到工作表“IR delta1”。

book = load_workbook(Results)
writer = pd.ExcelWriter(Results, engine = 'openpyxl')
writer.book = book

df2.to_excel(writer, sheet="IR delta", startrow=0, startcol= 10, index=False)

标签: pythonexcelpandasopenpyxlxlsxwriter

解决方案


import pandas as pd

只需使用merge()方法:-

masterdf=df2.merge(df1,on=['Qualifier','CR']) 

注意:-如果 CR 列不同,即两个数据帧中的 CR 列不同。请使用以下代码:-

masterdf=df2.merge(df1,on='Qualifier',suffixes=['_df1','df_2']) 

现在保存masterdf:-

writer = pd.ExcelWriter(Results, engine = 'openpyxl')
writer.book = book

masterdf.to_excel(writer, sheet_name='IR delta', startrow=0, index=False)
writer.save()
writer.close()

推荐阅读