首页 > 解决方案 > 在多列上合并 2 个 pandas 数据框

问题描述

我有 2 个数据框,其中一个包含前几个月的预测值和实际值。如下图所示,它有 1 月和 2 月的预测。2 月的值为 Null。

DF1

日期 钥匙 价值 预言
1-1-21 一个 33211 22123
1-1-21 文学学士 43231 32132
1-1-21 C 13431 43432
1-2-21 一个 23421
1-2-21 文学学士 44443
1-2-21 C 32133

第二个数据框包含 2 月的日期、键和值。我想将它们合并以形成一个新表,其中包含所有实际值和一个表中的预测

DF2

日期 钥匙 价值
1-2-21 一个 33212
1-2-21 文学学士 52121
1-2-21 C 23123

我想将键和日期上的值合并到第一个表中。最终应该是这样的

日期 钥匙 价值 预言
1-1-21 一个 33211 22123
1-1-21 文学学士 43231 32132
1-1-21 C 13431 43432
1-2-21 一个 33212 23421
1-2-21 文学学士 52121 44443
1-2-21 C 23123 32133

我试过pd.merge它创建一个新列而不是连接到一个列中,pd.join但是它进行了左连接并删除了一些预测数据。combine first 只是简单地附加到数据

标签: pythonpandasdataframemerge

解决方案


这可能是一种在一条(尽管很长)行中执行此操作的方法:

df1['Value'] = df1.apply(lambda row: row['Value'] if pd.notna(row['Value']) else df2[(df2['Date'] == row['Date']) & (df2['Key'] == row['Key'])].iloc[0]['Value'], axis=1)

推荐阅读