我有一个pandas数据框,如下所示:
Age Sex
23 Male
34 Female
38 Female
32 Male
33 Female
20 Male
34 Male
我需要对其进行分组并将其制表,使其看起来像这样
Age Male Female
21 - 25 2 0
26 - 30 0 0
31 - 35 2 2
36 - 40 0 1
我怎么能这样做是熊猫?
答案 0 :(得分:1)
您可以按照以下方式执行此操作。
首先将'count'
列设置为1:
df['count'] = 1
现在制作年龄组的另一栏。在下一行的数组中,放置您喜欢的任何边界:
df['age_group'] = pd.cut(df.Age, [20, 31, 36])
现在,您需要做的就是使用年龄组作为索引来转动表格,将性别作为列,将计数作为值,将聚合作为总和:
>>> df.pivot_table('count', index='age_group', columns='Sex', aggfunc='sum')
Sex Female Male
age_group
(20, 31] NaN 1
(31, 36] 2 2
如果需要,您可以使用NaN
进一步更改fillna
:
>>> df.pivot_table('count', index='age_group', columns='Sex', aggfunc='sum').fillna(0)
Sex Female Male
age_group
(20, 31] 0 1
(31, 36] 2 2