首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在多索引DataFrame中将列中的所有值逐级除以总数

如何在多索引DataFrame中将列中的所有值逐级除以总数
EN

Stack Overflow用户
提问于 2022-03-19 19:36:35
回答 1查看 38关注 0票数 0

我有一个多索引的DataFrame。FGs是我创建的4个组。

我需要改变生物量(又名BIOMc)的百分比。

要做到这一点,我必须除以每一组中的生物量之和。我不知道如何在多索引DataFrame中做到这一点。

我知道如何才能获得单个组的结果,例如:

代码语言:javascript
复制
workdf.loc['RSH'] / workdf.loc['RSH'].sum()

但是,我不知道如何重申(不实际迭代,因为我认为这里没有必要)所有组的过程,也不具体地写FGs的名称。

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-03-19 19:43:05

使用groupby+transform

代码语言:javascript
复制
df['BIOMc']/df.groupby(level='FG')['BIOMc'].transform('sum')
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71541427

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档