如何使用Pandas按两列分组?

3

我正在研究一个需要按两列分组的算法。Pandas支持使用以下方法按两列进行分组:

df.groupby([col1, col2])

但生成的数据框不是所需的数据框。 工作环境:
Python : v3.5
Pandas : v0.18.1
Pandas 数据框 - 输入数据:
     Type                  Segment
id                              
1   Domestic                 1
2     Salary                 3
3        NRI                 1
4     Salary                 4
5     Salary                 3
6        NRI                 4
7     Salary                 4
8     Salary                 3
9     Salary                 4
10       NRI                 4

所需数据框架:每个细分市场中[国内、薪资、非居民印度人]的计数

                  Domestic    Salary    NRI
        Segment
              1          1       3       1
              3          0       0       0
              4          0       3       2                   

实验:

group = df.groupby(['Segment', 'Type'])
group.size()

Segment           Type        Count
1                 Domestic    1
                  NRI         1
3                 Salary      3
4                 Salary      3
                  NRI         2

我可以使用MS Excel数据透视表功能来实现所需的数据框。是否有办法,可以使用pandas实现类似的结果?


你尝试过访问 http://pandas.pydata.org/pandas-docs/version/0.18.1/generated/pandas.pivot_table.html 吗? - Tom Ron
1个回答

9
在使用Groupby.size操作后,会创建一个需要转换为数据框的multi-index(2级索引)series对象,可以通过unstacking第二级索引并可选地用0填充获得的NaNs来完成转换。请参考文档了解更多信息。
df.groupby(['Segment', 'Type']).size().unstack(level=1, fill_value=0)

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接