2016-08-18 117 views
1

我有兩個包含兩列,一個組標識符和一個id的大熊貓數據框(有數百萬行)。我試圖創建一個包含組,id的組合數據框,再加上一列,如果id在第一個數據框中,則爲1;否則爲0,如果id在第二個數據框中,則爲1;否則爲1一個0.熊貓:合併數據框並創建新的條件列

換句話說,我想合併兩個數據框,並創建條件列的基礎上,如果ID是每個原始數據幀的存在。有關如何解決這個問題的任何建議?

這裏是一個小例子:

import pandas as pd 

>>> df_a = pd.DataFrame({'group': list('AAABBB'), 'id': [11,12,13,21,22,23]}) 
>>> df_b = pd.DataFrame({'group': list('AAABB'), 'id': [11,13,14,22,24]}) 
>>> df_a 

group id 
A  11 
A  12 
A  13 
B  21 
B  22 
B  23 

>>> df_b 

group id 
A  11 
A  13 
A  14 
B  22 
B  24 

輸出應該是這樣的:

>>> df_full  
group id a b 
A  11 1 1 
A  12 1 0 
A  13 1 1 
A  14 0 1 
B  21 1 0 
B  22 1 1 
B  23 1 0 
B  24 0 1 

回答

3

可以爲每個數據幀的創建兩列一個合併之前並填寫NA與合併後爲零:

df_a['a'] = 1 
df_b['b'] = 1 

pd.merge(df_a, df_b, how = 'outer', on = ['group', 'id']).fillna(0) 

# group id  a b 
# 0 A 11.0 1.0 1.0 
# 1 A 12.0 1.0 0.0 
# 2 A 13.0 1.0 1.0 
# 3 B 21.0 1.0 0.0 
# 4 B 22.0 1.0 1.0 
# 5 B 23.0 1.0 0.0 
# 6 A 14.0 0.0 1.0 
# 7 B 24.0 0.0 1.0 
+0

謝謝,@Psidom,這工作。 – cyril