在遍历variableA
列时,我想生成一个新列,只要中的行 values
或variableA
{1}}等于variableB
的当前行值。示例数据:
variableA
我可以在 values variableA variableB
0 134 1 3
1 12 2 6
2 43 1 2
3 54 3 1
4 16 2 7
匹配当前行values
时选择variableA
的总和:
variableA
但是,只要df.groupby('variableA')['values'].transform('sum')
与values
的当前行匹配,就会选择variableB
的总和。我尝试了variableA
,但它似乎与.loc
不太匹配。预期产出如下:
.groupby
谢谢!
答案 0 :(得分:2)
好吧,你总是可以使用.apply
,但要注意:它可能很慢:
>>> df
values variableA variableB
0 134 1 3
1 12 2 6
2 43 1 2
3 54 3 1
4 16 2 7
>>> df.apply(lambda S: df.loc[(df.variableA == S.variableA) | (df.variableB == S.variableA), 'values'].sum(), axis=1)
0 231
1 71
2 231
3 188
4 71
dtype: int64
当然,你必须分配它......
>>> df['result'] = df.apply(lambda S: df.loc[(df.variableA == S.variableA) | (df.variableB == S.variableA), 'values'].sum(), axis=1)
>>> df
values variableA variableB result
0 134 1 3 231
1 12 2 6 71
2 43 1 2 231
3 54 3 1 188
4 16 2 7 71
答案 1 :(得分:2)