Y1961 Y1962 Y1963 Y1964 Y1965 Region
0 82.567307 83.104757 83.183700 83.030338 82.831958 US
1 2.699372 2.610110 2.587919 2.696451 2.846247 US
2 14.131355 13.690028 13.599516 13.649176 13.649046 US
3 0.048589 0.046982 0.046583 0.046225 0.051750 US
4 0.553377 0.548123 0.582282 0.577811 0.620999 US
In the above dataframe, I would like to get average of each row. currently, I am doing this:
df.mean(axis=0)
However, this does away with the Region column as well. how can I compute mean and also retain Region column
I think this is what you are looking for:
df.drop('Region', axis=1).apply(lambda x: x.mean(), axis=1)
We can find the the mean of a row using the range function, i.e in your case, from the Y1961 column to the Y1965
df['mean'] = df.iloc[:, 0:4].mean(axis=1)
And if you want to select individual columns
df['mean'] = df.iloc[:, [0,1,2,3,4].mean(axis=1)
If you are looking to average column wise. Try this,
df.drop('Region', axis=1).apply(lambda x: x.mean())
# it drops the Region column
df.drop('Region', axis=1,inplace=True)
Source: Stackoverflow.com