如何在Python中为DataFrame添加发行人权重列?
实现发行人权重列的Python方案
可以通过Pandas的分组统计与转换功能快速实现需求,以下是具体步骤和代码:
核心思路
- 按行业(
Sector)分组,统计每个行业的发行人(Issuer)数量 - 将行业发行人数量匹配到原DataFrame的每一行
- 用行业权重(
Sector Weights)除以对应行业的发行人数量,得到发行人权重(Issuer Weights)
- 按行业(
代码实现
import pandas as pd # 模拟你的输入DataFrame(可替换为实际数据) df = pd.DataFrame({ 'Sector': ['Technology', 'Technology', 'Financials', 'Financials', 'Financials'], 'Issuer': ['A', 'B', 'C', 'D', 'E'], 'Sector Weights': [0.3, 0.3, 0.7, 0.7, 0.7] }) # 为每一行添加所属行业的发行人数量 df['issuer_count'] = df.groupby('Sector')['Issuer'].transform('nunique') # 计算发行人权重 df['Issuer Weights'] = df['Sector Weights'] / df['issuer_count'] # 可选:删除中间辅助列 df = df.drop('issuer_count', axis=1) # 查看结果 print(df)关键代码说明
groupby('Sector')['Issuer'].transform('nunique'):通过transform方法,将分组统计出的行业发行人数量映射到原DataFrame的每一行,无需额外合并操作,高效简洁- 除法运算利用Pandas的广播特性,自动完成逐行计算
输出结果会与你期望的DataFrame结构完全一致。
内容的提问来源于stack exchange,提问作者Shubham
相关产品推荐
相关产品推荐

