我有一个这样的数据框;
ID code num
333_c_132 x 0
333_c_132 n36 1
998_c_134 x 0
998_c_134 n36 0
997_c_135 x 1
997_c_135 n36 0
由此,我必须创建一个如下所示的新数据框;您会看到新列numX
由唯一的ID
组成。请注意,numX
值取自与num
对应的n36
列。
ID code num numX
333_c_132 x 0 1
998_c_134 x 0 0
997_c_135 x 1 0
如何仅使用熊猫来做到这一点?
答案 0 :(得分:4)
您可以使用遮罩,然后在旋转后合并:
m = df['code'].eq('n36')
(df[~m].merge(df[m].set_index(['ID','code'])['num'].unstack()
,left_on='ID',right_index=True))
ID code num n36
0 333_c_132 x 0 1
2 998_c_134 x 0 0
4 997_c_135 x 1 0