首页 > 解决方案 > pandas:从现有列值创建一个新数据框

问题描述

我有一个这样的数据框;

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形成了 unique 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

我怎样才能只使用熊猫来做到这一点?

标签: pandaspandas-groupby

解决方案


您可以使用蒙版,然后在旋转后合并:

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

推荐阅读