大熊猫:从现有的列值创建一个新的数据框

时间:2020-06-19 16:48:24

标签: pandas pandas-groupby

我有一个这样的数据框;

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

如何仅使用熊猫来做到这一点?

1 个答案:

答案 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