pandas:从现有列值创建新数据框

标签 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 值取自与 n36 对应的 num 列。

ID          code   num   numX
333_c_132   x       0     1
998_c_134   x       0     0
997_c_135   x       1     0

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

最佳答案

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

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

关于pandas:从现有列值创建新数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62474969/

相关文章:

python - 将列表中的元素分配给数据框中的不同列

python - 合并两个 pandas 数据框(加入一个公共(public)列)

python - Pandas 数据透视表格式化列名称

python - 有没有办法根据Python中的一列或多列中具有相似值的行来选择表中的某些行?

当只有一个值分组时,Pandas groupby

python - 如何添加另一个数据框的索引

python - 使用 pandas - n gram 数据挖掘的数据中出现次数最多的字符串

python - 如何根据ID和日期计算运行总和

python - 在 Python 中使用 Pandas Groupby 按系列中的标签分组

python - 使用 Pandas 进行多列分组以找到每组的最大值