>>> df
Country Region GDP Population male_population
0 USA TX 10 100 50
1 USA TX 11 120 60
2 USA KY 11 200 120
3 Austria Wienna 5 50 34
>>>
>>> df2 = df.groupby(['Country','Region']).agg({'GDP': [np.size, np.sum], 'Population': [np.average, np.sum], 'male_population': np.sum})
>>> df2
GDP male_population Population
size sum sum average sum
Country Region
Austria Wienna 1 5 34 50 50
USA KY 1 11 120 200 200
TX 2 21 110 110 220
>>>
>>> df2['% of male population'] = df2['male_population','sum'].divide(df2['Population','sum'])
>>> df2
GDP male_population Population % of male population
size sum sum average sum
Country Region