2016-08-18 116 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