【发布时间】:2018-07-08 01:21:03
【问题描述】:
我有两个数据框(df1)和(df2)如下:
df1
--------------------------------
id date value1 value2
--------------------------------
12 2010-10-09 ABC Value44
13 2011-11-08 CDE Value66
14 2015-10-08 FGH Value41
13 2009-09-10 IJK Value39
14 2010-03-05 LMN Value29
15 2006-11-12 OPQ Value33
df2
--------------------------------
id date value3 value4
--------------------------------
12 2010-10-09 20 99
15 2006-11-12 50 66
16 2015-10-08 60 41
13 2011-11-08 30 39
15 2010-03-08 50 29
15 2006-11-12 50 33
16 2001-12-04 60 11
12 2009-06-10 20 21
17 2017-10-11 18 22
18 2016-11-11 23 87
我想比较两个数据帧并找出每个数据帧的 id 和 date 列之间的匹配。如果匹配,则两个数据帧中的 id、日期和相应列应成为新数据帧中的一行(即 result_df)。如果不匹配但存在 id 和日期,则应将该 id 的所有相应列复制到 resul_df 中。
最后 result_df 应该是这样的:
result_df
--------------------------------------------
id date value1 value2 value3 value4
--------------------------------------------
12 2010-10-09 ABC Value44 20 99
12 2009-06-10 NA NA 20 21
13 2011-11-08 CDE Value66 30 39
13 2009-09-10 IJK Value39 NA NA
14 2015-10-08 FGH Value41 NA NA
14 2010-03-05 LMN Value29 NA NA
15 2006-11-12 OPQ Value33 50 66
15 2006-11-12 OPQ Value33 50 33
15 2010-03-08 NA NA 50 29
16 2015-10-08 NA NA 60 41
16 2001-12-04 NA NA 60 11
17 2017-10-11 NA NA 18 22
18 2016-11-11 NA NA 23 87
我已将 .merge 与内部和外部联接一起使用,但它没有按预期执行,或者我可能没有使用正确的方法。我认为简单的解决方案是使用 for 循环(因为两个数据帧只有 400 行要比较),但逻辑似乎让我感到困惑。谁能帮我这个?谢谢!
【问题讨论】:
标签: python-2.7 pandas