Pandas中的数据分组

时间:2016-02-22 09:52:49

标签: python pandas

我有一个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

我怎么能这样做是熊猫?

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