You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Pandas GroupBy计算ESG分组内公司市值权重?

问题与解决方案

我拥有一个包含多家公司的DataFrame,每家公司被分配至ESG Bottom、ESG 4、ESG 3、ESG 2或ESG Top五个分组之一。我需要计算各公司在所属分组内的权重,以用于后续计算加权分组收益及整体分组收益。目前已通过groupby获取到各分组的总市值(MC)以及各公司的个体市值。我的问题是:如何无需使用笨拙且缓慢的循环,用简洁代码将公司个体市值除以对应分组总市值,并将结果存入“Weight in Quintile PF”列?

解决方案

用pandas内置的groupby.transform()方法就能高效实现,完全不需要循环:

# 假设DataFrame名为df,ESG分组列是'ESG_Group',个体市值列是'MC'
df['Weight in Quintile PF'] = df['MC'] / df.groupby('ESG_Group')['MC'].transform('sum')

关键逻辑说明

  • df.groupby('ESG_Group')['MC'].transform('sum'):按ESG分组计算每组的总市值,同时将该总市值映射到分组内的每一行,生成一个和原DataFrame长度一致的Series。
  • 除法运算自动匹配:用每家公司的个体市值(df['MC'])除以对应分组的总市值,直接得到该公司在所属分组内的权重,结果自动存入目标列。

内容的提问来源于stack exchange,提问作者9Morgan8

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 12:02:08