因此,我在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/