熊猫:合并数据框并创建新的条件列
问题描述:
我有两个包含两列,一个组标识符和一个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
答
可以为每个数据帧的创建两列一个合并之前并填写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
谢谢,@Psidom,这工作。 – cyril