python - Pandas pivot_table 按值对列进行分组

标签 python pandas pivot-table

我正在尝试使用数值作为 Pandas pivot_table 上的列。问题在于,由于每个数字大部分都是唯一的,因此生成的 pivot_table 作为聚合数据的方式不是很有用。

这是我目前所拥有的(假数据示例):

import pandas as pd   

df = pd.DataFrame({'Country': ['US', 'Brazil', 'France', 'Germany'], 
                       'Continent': ['Americas', 'Americas', 'Europe', 'Europe'], 
                       'Population': [321, 207, 80, 66]})


pd.pivot_table(df, index='Continent', columns='Population', aggfunc='count')

这是结果的图像 pivot_table .

如何根据我的列将我的值分组到范围内?

换句话说,我如何统计所有人口...<100、100-200、>300 的国家/地区?

最佳答案

使用 pd.cut:

df = df.assign(PopGroup=pd.cut(df.Population,bins=[0,100,200,300,np.inf],labels=['<100','100-200','200-300','>300']))

输出:

  Continent  Country  Population PopGroup
0  Americas       US         321     >300
1  Americas   Brazil         207  200-300
2    Europe   France          80     <100
3    Europe  Germany          66     <100

pd.pivot_table(df, index='Continent', columns='PopGroup',values=['Country'], aggfunc='count')

输出:

        Country          
PopGroup  200-300 <100 >300
Continent                  
Americas      1.0  NaN  1.0
Europe        NaN  2.0  NaN

关于python - Pandas pivot_table 按值对列进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44419851/

相关文章:

python - Pandas 列名称有两个级别

python - 使用 Spark DataFrame 列制作直方图

mysql - Laravel 5.8 多对多关系使用数据透视表的自定义列名称

python - Numpy 优化 reshape : 2D array to 3D

Python 从当前文件循环

python - 如何创建具有多个分类特征的SVM?

Excel - 计算分布在多行中的数据的持续时间

Excel将行转换为带有组的列

python - 当前在 Django 模板中获取主页 URL(域)的方法?

python - 如何在Python中获得切向向量?