数据框列的平均值

时间:2018-08-13 16:27:35

标签: python pandas dataframe average mean

我想获得多年来每个国家的平均GDP,列2006、2007 ... 2015包含GDP数量...我的代码返回一个错误,该错误意味着mean(axis = 1)至少需要1个变量,并且已为其分配1 ...这很奇怪。.我也发现我们使用均值而不是avg很奇怪,但是无法找到groupby的avg函数

这是我的代码

    Top15 = ANSWER
    Top15 = Top15[['Country', '2006', '2007', '2008', '2009', '2010', 
    '2011', '2012', '2013', '2014', '2015']]
    return Top15.groupby('Country').agg({"avg": np.mean(axis=1)})

3 个答案:

答案 0 :(得分:2)

在这里不需要

GroupBy,因为您正在执行计算而不是聚合。您可以只使用pd.DataFrame.mean。这是一个最小的示例:

df = pd.DataFrame({'Country': ['UK', 'US'],
                   '2006': [1, 2],
                   '2007': [3, 4],
                   '2008': [5, 6]})

df['mean'] = df[['2006', '2007', '2008']].mean(1)

print(df)

   2006  2007  2008 Country  mean
0     1     3     5      UK   3.0
1     2     4     6      US   4.0

答案 1 :(得分:0)

使用mean()

Top15 = ANSWER
Top15 = Top15[['Country', '2006', '2007', '2008', '2009', '2010', '2011', '2012', '2013', '2014', '2015']]    
return Top15.groupby('Country').mean()

答案 2 :(得分:0)

您的代码有多个问题:

  1. .agg和字典将输入列映射到聚合类型,例如.agg({'2016': 'mean'})
  2. np.mean(axis=1)尝试评估某些内容,但您未提供输入。 .agg({'2016': lambda x: np.mean(x)})可以工作
  3. 最简单的方法是Top15.groupby('Country').mean()(将其读为“按国家/地区分组,并为每个分组计算平均值(avg)”)