我有这个多索引数据框。FG 是我创建的 4 个组。
我需要以百分比更改生物量(又名 BIOMc)。
为此,我必须除以每个组内的生物量总和。我不知道如何在多索引 DataFrame 中做到这一点。
我知道如何获得单个组的结果,例如:
workdf.loc['RSH'] / workdf.loc['RSH'].sum()
但我不知道如何重申(没有实际迭代,因为我认为这里没有必要)所有组的过程,也没有专门写下 FG 的名称。
import pandas as pd
workdf = pd.DataFrame({
'FG': ['RSH', 'RSH', 'RSH', 'RSS', 'RSS', 'SSH', 'SSH', 'SSS', 'SSS', 'SSS'],
'Diet': ['A', 'B', 'C', 'A', 'C', 'B', 'C', 'A', 'B', 'C'],
'BIOMc': [3, 0, 21, 0, 2, 0, 11, 0, 1, 3]
}).set_index(['FG', 'Diet'])
BIOMc
FG Diet
RSH A 3
B 0
C 21
RSS A 0
C 2
SSH B 0
C 11
SSS A 0
B 1
C 3
使用groupby
+ transform
:
df['BIOMc']/df.groupby(level='FG')['BIOMc'].transform('sum')
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句