gpt4 book ai didi

python - 如何在 python 中使用分组进行聚合

转载 作者:太空宇宙 更新时间:2023-11-04 04:56:28 25 4
gpt4 key购买 nike

假设我有如下 df

bin=[0,5,10]

sex age num
1 4 11
1 3 12
2 2 13
2 10 14

我想对 num 和 count age 求和。首先我尝试了

df.groupby([df.sex,pd.cut(df.age,bin)]).size()

df.groupby([df.sex,pd.cut(df.age,bin)]).sum()

但我不知道如何聚合和转换它们。我想要以下结果。喜欢

sex        age   num
1 [0,5) 2 23
1 [5,10) 0 0
2 [0,5) 1 13
2 [5,10) 1 14

如果我能以简单的方式得到这个结果,请有人告诉我如何转换原始数据框。

最佳答案

使用agg然后通过 unstack + stack 添加缺失值:

df = df.groupby([df.sex,pd.cut(df.age,bin)])
.agg({'num':'sum', 'age':'size'})
.unstack(fill_value=0)
.stack()
print (df)
num age
sex age
1 (0, 5] 23 2
(5, 10] 0 0
2 (0, 5] 13 1
(5, 10] 14 1

或者创建MultiIndexreindex :

bin=[0,5,10]
cats = pd.cut(df.age,bin)
mux = pd.MultiIndex.from_product([df.sex.unique(), cats.cat.categories])
df = df.groupby([df.sex,cats]).agg({'num':'sum', 'age':'size'}).reindex(mux, fill_value=0)
print (df)
num age
1 (0, 5] 23 2
(5, 10] 0 0
2 (0, 5] 13 1
(5, 10] 14 1

关于python - 如何在 python 中使用分组进行聚合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46931959/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com