gpt4 book ai didi

python - 如何在 pandas 中以复杂的条件进行分箱

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

我有如下数据框

age  type days 
1 a 1
2 b 3
2 b 4
3 a 5
4 b 2
6 c 1
7 f 0
7 d 4
10 e 2
14 a 1

首先我想对年龄进行分类

年龄

[0~4]

age  type days  
1 a 1
2 b 3
2 b 4
3 a 5
4 b 2

然后用type分组汇总统计天数

   sum count
a 6 2
b 9 3
c 0 0
d 0 0
e 0 0
f 0 0

然后我想把这个方法应用到另一个binns。

[5~9][11~14]

下面是我想要的结果

   [0~4]         [5~9]      [10~14]
sum count sum count sum count
a 6 2 0 0 1 1
b 9 3 0 0 0 0
c 0 0 1 1 0 0
d 0 0 4 1 0 0
e 0 0 0 0 2 1
f 0 0 0 1 0 0

如何做到这一点?这对我来说非常复杂..

最佳答案

考虑一个 pivot_tablepd.cut如果您不太关心列的顺序,因为 countsum 不会在 bin 下配对在一起。通过操作,您可以更改此类顺序。

df['bin'] = pd.cut(df.age, [0,4,9,14])

pvtdf = df.pivot_table(index='type', columns=['bin'], values='days',
aggfunc=('count', 'sum')).fillna(0)

# count sum
# bin (0, 4] (4, 9] (9, 14] (0, 4] (4, 9] (9, 14]
# type
# a 2.0 0.0 1.0 6.0 0.0 1.0
# b 3.0 0.0 0.0 9.0 0.0 0.0
# c 0.0 1.0 0.0 0.0 1.0 0.0
# d 0.0 1.0 0.0 0.0 4.0 0.0
# e 0.0 0.0 1.0 0.0 0.0 2.0
# f 0.0 1.0 0.0 0.0 0.0 0.0

关于python - 如何在 pandas 中以复杂的条件进行分箱,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41993561/

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