gpt4 book ai didi

python - 计算 Pandas 中分组数据的权重

转载 作者:太空狗 更新时间:2023-10-30 01:21:22 25 4
gpt4 key购买 nike

我想用 pandas 数据框计算投资组合权重。以下是一些虚拟数据的示例:

df1 = DataFrame({'name' : ['ann','bob']*3}).sort('name').reset_index(drop=True)
df2 = DataFrame({'stock' : list('ABC')*2})
df3 = DataFrame({'val': np.random.randint(10,100,6)})
df = pd.concat([df1, df2, df3], axis=1)

enter image description here

每个人拥有 3 支股票,其值(value)为 val。我们可以这样计算投资组合权重:

df.groupby('name').apply(lambda x: x.val/(x.val).sum())

这给出了这个:

enter image description here

如果我想将列 wgt 添加到 df,我需要将此结果合并回 df on name索引。这看起来相当笨拙。

有没有办法一步到位?或者最好利用 pandas 特性的方法是什么?

最佳答案

使用transform,这将返回一个索引与原始 df 对齐的系列:

In [114]:
df['wgt'] = df.groupby('name')['val'].transform(lambda x: x/x.sum())
df

Out[114]:
name stock val wgt
0 ann A 18 0.131387
1 ann B 43 0.313869
2 ann C 76 0.554745
3 bob A 16 0.142857
4 bob B 44 0.392857
5 bob C 52 0.464286

关于python - 计算 Pandas 中分组数据的权重,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31811457/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com