Excel 如何使用熊猫按两列分组?

Excel 如何使用熊猫按两列分组?,excel,python-3.x,pandas,Excel,Python 3.x,Pandas,我正在研究一种算法,它需要按两列进行分组。Pandas支持通过以下方式按两列分组: df.groupby([col1, col2]) 但生成的数据帧不是所需的数据帧 工作设置: Python:v3.5 熊猫:v0.18.1 熊猫数据帧-输入数据: Type Segment id 1 Domestic 1 2 Salary

我正在研究一种算法,它需要按两列进行分组。Pandas支持通过以下方式按两列分组:

df.groupby([col1, col2])
但生成的数据帧不是所需的数据帧

工作设置:
Python:v3.5
熊猫:v0.18.1

熊猫数据帧-输入数据:

     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
group = df.groupby(['Segment', 'Type'])
group.size()

Segment           Type        Count
1                 Domestic    1
                  NRI         1
3                 Salary      3
4                 Salary      3
                  NRI         2
所需数据帧: 各细分市场中[国内、工资、NRI]的计数

                  Domestic    Salary    NRI
        Segment
              1          1       3       1
              3          0       0       0
              4          0       3       2                   
实验:

     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
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获得类似的结果吗?

在执行
Groupby.size
操作后,将创建一个
多索引
(2级索引)
系列
对象,该对象需要转换为数据帧,这可以通过第二级索引完成,并且可以选择填充使用0获得的
NaNs

df.groupby(['Segment', 'Type']).size().unstack(level=1, fill_value=0)

你试过-?