【问题标题】:How to group by two Columns using Pandas?如何使用 Pandas 按两列分组?
【发布时间】:2017-04-28 16:35:48
【问题描述】:

我正在研究一种算法,该算法需要按两列分组。 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

所需的数据框: 每个细分市场中的 [国内、薪水、NRI] 计数

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

【问题讨论】:

标签: excel python-3.x pandas


【解决方案1】:

Groupby.size 操作之后,会创建一个multi-index(2 级索引) series 对象,该对象需要转换为数据帧,这可以通过unstacking 2 级索引和可选填充@ 来完成987654328@用0获得。

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

【讨论】:

    猜你喜欢
    • 2020-07-23
    • 1970-01-01
    • 2021-12-16
    • 2018-12-08
    • 2022-11-12
    • 2022-07-06
    • 2023-02-21
    • 2019-01-13
    • 2021-08-26
    相关资源
    最近更新 更多