如何使用Pandas分组两列?

kin*_*spp 2 excel python-3.x pandas

我正在研究一种算法,它需要按两列分组.Pandas支持使用以下两列进行分组:

df.groupby([col1, col2])
Run Code Online (Sandbox Code Playgroud)

但结果数据帧不是必需的数据帧

工作设置:
Python: v3.5
Pandas: v0.18.1

Pandas Dataframe - 输入数据:

     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
Run Code Online (Sandbox Code Playgroud)

所需数据帧: 每个段中[国内,薪水,NRI]的计数

                  Domestic    Salary    NRI
        Segment
              1          1       3       1
              3          0       0       0
              4          0       3       2                   
Run Code Online (Sandbox Code Playgroud)

实验:

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

Segment           Type        Count
1                 Domestic    1
                  NRI         1
3                 Salary      3
4                 Salary      3
                  NRI         2
Run Code Online (Sandbox Code Playgroud)

我能够使用MS Excel数据透视表功能实现所需的数据帧.有什么办法,我可以用熊猫达到类似的效果吗?

Nic*_*eli 7

Groupby.size操作之后,创建需要转换为数据帧的multi-index(2级索引)series对象,这可以通过unstacking第二级索引完成并且可选地NaNs用0获得填充.

df.groupby(['Segment', 'Type']).size().unstack(level=1, fill_value=0)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述