熊猫:根据不同列中的类别对多个列的值进行分组。然后根据该类别的分组计算平均值

时间:2020-02-12 19:31:31

标签: python pandas

我有一个类似这样的数据集。

Country  Continent    1970   ....   2000 .... 2011
abc        Asia        0.8   ....    0.9 .... 1.1
def        Europe      0.9   ....    1.6 .... 0.6
asd        Oceania     1.2   ....    2.3 .... 1.5
.            .
.            .          .             .         .
.            .          .             .         .

我要实现的是基于大洲列的2000年及以上的组数据(仅某些列)。因此,将2000-2011年亚洲的数据分组,将欧洲的数据分组,依此类推,然后计算该分组的平均值。我的预期输出是这样的。

Avg of Asia from 2000-2011 is: val
Avg of Europe from 2000-2011 is: val
Avg of North America from 2000-2011 is: val

我对python和pandas相当陌生。到目前为止,这是我尝试过的。这给了我那几年的价值平均值。如何通过按大陆将年度值分组来做到这一点。

data_set = pd.read_csv('dataset.csv')
data_columns_needed = data_set[['2000', '2001', '2002', '2003', '2004', '2005', '2006', '2007', '2008', '2009', '2010', '2011']]
mean = data_columns_needed.mean()
print(mean)

我知道groupby方法,但是我还没有弄清楚如何实现它来实现此目的的解决方案。非常感谢帮助!

2 个答案:

答案 0 :(得分:0)

您可以这样做:

# don't forget to add the 'Country' AND 'Continent' key here:
data_columns_needed = data_set[['Country', 'Continent', '2000', '2001', '2002', '2003', '2004', '2005', '2006', '2007', '2008', '2009', '2010', '2011']]

# average over a row:
data_columns_needed['row_mean'] = data_columns_needed[['2000', '2001' ... ]].mean(axis=1)

# average over a group, grouped by continents and countries:
data_columns_needed.groupby(['Continent', 'Country']).mean()

答案 1 :(得分:0)

检查数据框后,实际上不需要groupby。您只需要if (window.location.hostname === 'gb.homepage.com') { document.querySelector('h1').innerHTML = 'GB Header' } 公式并传递参数mean()

尝试以下操作:

axis=0