在新列中插入组的总和

2024-10-02 20:38:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个简单的DataFrame

gov dis value1  value2
a   a_1 8   8
a   a_2 7   18
a   a_3 3   2
a   a_4 12  12
b   b_1 4   11
b   b_2 16  9
b   b_3 17  12
b   b_4 7   9
b   b_5 15  11
b   b_6 13  16

我可以轻松地创建value1中所有值的总和。你知道吗

per_t['sum_v1'] = sum(per_t['value1'])

生产:

    gov dis value1  value2  sum_v1
0   a   a_1 8   8   102
1   a   a_2 7   18  102
2   a   a_3 3   2   102
3   a   a_4 12  12  102
4   b   b_1 4   11  102
5   b   b_2 16  9   102
6   b   b_3 17  12  102
7   b   b_4 7   9   102
8   b   b_5 15  11  102
9   b   b_6 13  16  102

是否可以将其更改为计算每个saygov的总和?我尝试了groupbyagg函数,但没有成功。如果我尝试:

per_t['sum_gov'] = per_t.groupby('gov')['value1'].sum()

表格内容如下:

gov dis value1  value2  sum_v1  sum_gov
0   a   a_1 8   8   102 NaN
1   a   a_2 7   18  102 NaN
2   a   a_3 3   2   102 NaN
3   a   a_4 12  12  102 NaN
4   b   b_1 4   11  102 NaN
5   b   b_2 16  9   102 NaN
6   b   b_3 17  12  102 NaN
7   b   b_4 7   9   102 NaN
8   b   b_5 15  11  102 NaN
9   b   b_6 13  16  102 NaN

Tags: 函数dataframenanagg表格govv1sum
1条回答
网友
1楼 · 发布于 2024-10-02 20:38:32

你可以的

df['sum_gov'] = df.groupby('gov')['value1'].transform(sum)

docs

The transform method returns an object that is indexed the same (same size) as the one being grouped. Thus, the passed transform function should return a result that is the same size as the group chunk.

相关问题 更多 >