因此,我在Pandas中的数据如下所示:

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


我已经尝试了枚举之类的几件事,但似乎无法很好地解决这个问题。谢谢!

最佳答案

您可以等效地从总和中减去等于当前变量的所有值之和,而不用查找任何不等于当前变量的值之和:

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

关于python - Python Pandas:根据另一列的值选择一列的多个单元格值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41683748/

10-13 01:58