[英]How to get percentage contribution for each group in df having MultiIndex in pandas?
我有一个 df 如下:
year 和 Continent 是索引。 hydro_total 是一列。
我想添加一个列,该列将占给定年份大陆贡献的百分比。
例如: 1971 年,非洲有 2.04 的贡献,美洲有 48.56 的贡献,亚洲、欧洲和大洋洲的情况类似。 这将重复每年。
这是数据:
{'hydro_total': {(1971, 'Africa'): 1861980.0,
(1971, 'America'): 44127920.0,
(1971, 'Asia'): 14514450.0,
(1971, 'Europe'): 28232850.0,
(1971, 'Oceania'): 2126000.0,
(1972, 'Africa'): 2300750.0,
(1972, 'America'): 47242190.0,
(1972, 'Asia'): 14970150.0,
(1972, 'Europe'): 29427610.0,
(1972, 'Oceania'): 2225000.0}}
如果我理解正确:
df['contribution'] = df.groupby(level=0)['hydro_total'] \
.transform(lambda g: g / g.sum()) * 100
结果:
hydro_total contribution
1971 Africa 1861980.0 2.049212
America 44127920.0 48.565228
Asia 14514450.0 15.973959
Europe 28232850.0 31.071820
Oceania 2126000.0 2.339781
1972 Africa 2300750.0 2.392485
America 47242190.0 49.125821
Asia 14970150.0 15.567037
Europe 29427610.0 30.600942
Oceania 2225000.0 2.313715
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.