Python 如何获得大熊猫多指标df中各组的贡献百分比?
我的df如下所示: 年份和大陆是指数。hydro_total是一列 我想增加一个专栏,在给定的一年里,该专栏将占非洲大陆的一定比例 例如: 1971年,非洲有2.04笔捐款,美国有48.56笔捐款,亚洲、欧洲和大洋洲也是如此。 这将在每年重复 以下是数据:Python 如何获得大熊猫多指标df中各组的贡献百分比?,python,pandas,numpy,dataframe,Python,Pandas,Numpy,Dataframe,我的df如下所示: 年份和大陆是指数。hydro_total是一列 我想增加一个专栏,在给定的一年里,该专栏将占非洲大陆的一定比例 例如: 1971年,非洲有2.04笔捐款,美国有48.56笔捐款,亚洲、欧洲和大洋洲也是如此。 这将在每年重复 以下是数据: {'hydro_total': {(1971, 'Africa'): 1861980.0, (1971, 'America'): 44127920.0, (1971, 'Asia'): 14514450.0, (1971, 'E
{'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
对这就是我需要的。谢谢实际上,我有一个包含更多列的df。如何指定lambda函数以仅对hydro_total列应用转换。您可以在
groupby
之后指定列名。见我编辑的答案