【问题标题】:Add GroupBy mean result as a new column in pandas将 GroupBy 平均结果添加为 pandas 中的新列
【发布时间】:2018-02-23 01:35:54
【问题描述】:

我有一个数据框,它给出了每个指标的上限和下限,如下所示

    df = pd.DataFrame(
           {'indicator': ['indicator 1', 'indicator 1', 'indicator 2', 'indicator 2'],
            'year':[2014,2014,2015,2015],
            'value type': ['upper', 'lower', 'upper', 'lower'],
            'value':[12.3, 10.2, 15.4, 13.2]
           },
           index=[1,2,3,4])

我想删除上限值和下限值,并将其替换为两个值的平均值。

我该怎么做?

【问题讨论】:

    标签: python pandas group-by pandas-groupby mean


    【解决方案1】:

    你可以通过meangroupby 和transform。

    df['value'] = df.groupby('indicator')['value'].transform('mean')
    
    df
         indicator  value value type  year
    1  indicator 1  11.25      upper  2014
    2  indicator 1  11.25      lower  2014
    3  indicator 2  14.30      upper  2015
    4  indicator 2  14.30      lower  2015
    

    或者,如果您希望每个指标只有一行,请使用agg。

    df = df.groupby('indicator').agg('mean')
    df
                 value  year
    indicator               
    indicator 1  11.25  2014
    indicator 2  14.30  2015
    

    如果您希望将索引改为列,请调用reset_index:

    df = df.reset_index()
    df
         indicator  value  year
    0  indicator 1  11.25  2014
    1  indicator 2  14.30  2015
    

    【讨论】:

    • 感谢您输入 reset_index 部分,其他几个答案中都缺少它。
    猜你喜欢
    • 2019-10-01
    • 2022-01-24
    • 2021-02-01
    • 2018-12-12
    相关资源
    最近更新 更多