我有如下数据框
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
首先我想根据年龄进行分箱
age
[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_table
with pd.cut
如果您不太关心列顺序count and sum未在垃圾箱下配对。通过操作,您可以更改此类顺序。
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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)