2016-09-15 24 views
0

我有2代表不同大小的,我想用大熊猫以下列方式合并在Python遗漏值:填补不同形状的另一熊猫据帧

UID Property Date 
1 A   10/02/2016 
2 B   NaN 
3 A   10/02/2016 
4 C   NaN 
5 C   NaN 
6 A   10/02/2016 

表1包含有关房产交易和信息与该物业相关的日期。由于有些日期是NaN的,我想从仅含约属性的信息,但在表1中未取代的任何日期的另一个表(表2)代理它们:

Property DateProxy 
A   01/01/2016 
B   03/04/2016 
C   16/05/2016 

在我想结束得到如下:

UID Property Date 
1 A   10/02/2016 (kept from T1) 
2 B   03/04/2016 (imported from T2) 
3 A   10/02/2016 (kept from T1) 
4 C   16/05/2016 (imported from T2) 
5 C   16/05/2016 (imported from T2) 
6 A   10/02/2016 (kept from T1) 

回答

1

首先,让我们合并这两个数据集:我们不会覆盖原有日期:

df_merge = pandas.merge(T1, T2, on='Property') 

那么我们从更换复制它们的缺失值了“ DateProxy”字段:

df_merge.Date = df_merge.apply(
    lambda x: x['Date'] + ' (kept from T1)' if x['Date'] == x['Date'] 
              else x['DateProxy'] + ' (imported from T2)', 
    axis=1 
) 

(在x [ '日期'] == X [ '日期']是检查它不是NaN时,为NaN不等于本身)。最后,我们可以删除代理专栏:

df_final = df_merge.drop('DateProxy', axis=1) 
+0

非常感谢,我一直在为此奋斗了很长一段时间,现在已经在那里。 我也应该在最后一个表的括号之前加上#,sry回合说。 –