2016-09-15 58 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回合說。 –