【问题标题】:Pandas pivot_table group column by valuesPandas pivot_table 按值分组列
【发布时间】:2017-06-07 18:06:30
【问题描述】:

我正在尝试将数值用作 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')

这是结果的图像 .

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

换句话说,我如何计算所有人口... 300 的国家/地区?

【问题讨论】:

    标签: python pandas pivot-table


    【解决方案1】:

    使用 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
    

    【讨论】:

    • 很好的解决方案 - 谢谢!
    • @BrunoVieira,如果您认为 accepting 回答了您的问题,请考虑回答
    • 完成!感谢您的提醒(这是我的第一个问题)。
    • 如果参数right默认为真,这是否意味着100 bin实际上应该标记为'
    猜你喜欢
    • 1970-01-01
    • 2017-04-28
    • 1970-01-01
    • 2016-01-22
    • 1970-01-01
    • 1970-01-01
    • 2019-06-30
    • 2018-05-08
    • 2017-07-31
    相关资源
    最近更新 更多