Python Pandas:根据另一列的值选择一列的多个单元格值

时间:2017-01-16 19:31:09

标签: python pandas conditional

所以我的数据,在熊猫中,看起来像这样:

values    variables
134       1
12        2
43        1
54        3 
16        2

我想创建一个新列,当values的其余部分不等于variables中当前行的变量时,该列是variables的总和。例如,对于第一行,我想要将values的所有行加到variables != 1。结果如下:

values    variables   result
    134       1       82
    12        2       231
    43        1       82
    54        3       205
    16        2       231

我尝试了一些像枚举这样的事情,但我似乎无法很好地处理这件事。谢谢!

1 个答案:

答案 0 :(得分:3)

不是找到不等于当前变量的所有值的总和,而是可以等效地从总和中减去所有等于当前变量的值的总和而不使用任何过滤器:

df['result'] = df['values'].sum()
df['result'] -= df.groupby('variables')['values'].transform('sum')

如果你想要简洁,可以用一行:

df['result'] = df['values'].sum() - df.groupby('variables')['values'].transform('sum')

结果输出:

   values  variables  result
0     134          1      82
1      12          2     231
2      43          1      82
3      54          3     205
4      16          2     231