将两个数据帧合并为一个新的,带有标记为1或0的唯一项

ren*_*kre 11 python dataframe pandas

我有几个数据框。

数据框1

Feature   Coeff
a         0.5
b         0.3
c         0.35
d         0.2
Run Code Online (Sandbox Code Playgroud)

数据框2

Feature   Coeff
a         0.7
b         0.2
y         0.75
x         0.1
Run Code Online (Sandbox Code Playgroud)

我想合并此数据框并获取以下数据:

Feature |  DF1  |  DF2
a          1       1
b          1       1
c          1       0
d          1       0
y          0       1
x          0       1
Run Code Online (Sandbox Code Playgroud)

我知道我可以做一个,outer merge但我不知道如何从那里移动来获得上面介绍的最终数据帧。有任何想法吗?

use*_*203 11

使用concat+get_dummies

u = pd.concat([df1, df2], axis=0, keys=['DF1', 'DF2'])

pd.get_dummies(u.Feature).sum(level=0).T
Run Code Online (Sandbox Code Playgroud)

   DF1  DF2
a    1    1
b    1    1
c    1    0
d    1    0
x    0    1
y    0    1
Run Code Online (Sandbox Code Playgroud)


ank*_*_91 6

您可以merge与with series.str.get_dummies()一起使用以实现此目的:

m=df1[['Feature']].merge(df2[['Feature']],how='outer',indicator=True)
Run Code Online (Sandbox Code Playgroud)
d={'both':'DF1,DF2','left_only':'DF1','right_only':'DF2'}
m=m.assign(_merge=m._merge.map(d))
m[['Feature']].join(m._merge.str.get_dummies(','))
Run Code Online (Sandbox Code Playgroud)
  Feature  DF1  DF2
0       a    1    1
1       b    1    1
2       c    1    0
3       d    1    0
4       y    0    1
5       x    0    1
Run Code Online (Sandbox Code Playgroud)