我正在尝试对 Pandas 中的一列进行分组,然后对分组进行求和。
这是一个示例 df 和我的预期输出:
d = {'a':[1, 1, 1, 1, 2, 2, 2], 'b': [3, 4, 5, 6, 7,8,9] }
data = pd.DataFrame(data = d)
# should return sum of sum of groups
# correct output would be 42
我知道我可以使用以下方法返回组的总和:
data.groupby('a')['b'].transform(sum)
# which returns
0 18
1 18
2 18
3 18
4 24
5 24
6 24
Name: b, dtype: int64
但是,我不确定如何获得组总和的总和。 即
# sum of groupby
# group 1: 18
# group 2: 24
# sum of sum of groupby
# 18 + 24 = 42
答案 0 :(得分:2)
您需要使用 agg
代替 transform
。
res = data.groupby('a')['b'].agg(sum).sum()
资源:
42
data.groupby('a')['b'].agg(sum)
会给你
a
1 18
2 24
Name: b, dtype: int64