我有两个大熊猫数据框(具有数百万行),其中包含两列,一个组标识符和一个ID。我正在尝试创建一个包含组,ID的组合数据帧,如果ID在第一个数据帧中,则添加带有1的列,否则,如果ID在第二个数据帧中,则创建一个包含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

关于python - Pandas :合并数据框并创建新的条件列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39023511/

10-09 07:31
查看更多