我正在研究一种算法,该算法需要按两列分组。 Pandas 支持按两列分组,方法是:
df.groupby([col1, col2])
但是生成的数据帧不是所需的数据帧
工作设置:
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
所需数据框: 每个分割中的[国内、薪资、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 获得类似的结果吗?
最佳答案
在Groupby.size
操作之后,创建了一个多索引
(2级索引)series
对象,需要将其转换为一个数据框,可以通过unstacking
来完成第二级索引并可选地填充用 0 获得的 NaN
。
df.groupby(['Segment', 'Type']).size().unstack(level=1, fill_value=0)
关于excel - 如何使用 Pandas 按两列进行分组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41124106/