gpt4 book ai didi

python - 按组减少 Pandas 数据框

转载 作者:行者123 更新时间:2023-12-02 00:33:01 26 4
gpt4 key购买 nike

我一直在广泛搜索,但无法解决这个问题:

我在 pandas 中有一个数据框,如下所示:

date    ticker Name NoShares SharePrice Volume Relation
2/1/10 aaa zzz 1 1 1 d
2/1/10 aaa yyy 1 2 5 o
2/1/10 aaa zzz 2 5 2 d
2/5/10 bbb xxx 5 5 1 do
2/5/10 ccc www 5 5 1 d
2/5/10 ccc www 5 5 1 d
2/5/10 ddd vvv 5 5 1 o
2/6/10 aaa zzz 1 1 3 d

要求

  1. 我想按日期和姓名分组,并且:
  2. 总股数
  3. 有一个股价的加权平均值列(权重是 NoShares)
  4. 平均音量并将其作为一列
  5. 保持关系不变

所以我的输出看起来像这样:

date    ticker Name NoShares SharePrice Volume Relation
2/1/10 aaa zzz 3 3.6 1 d
2/1/10 aaa yyy 1 2 5 o
2/5/10 bbb xxx 5 5 1 do
2/5/10 ccc www 10 5 1 d
2/5/10 ddd vvv 5 5 1 o
2/6/10 aaa zzz 1 1 3 d

我尝试了有关堆栈溢出的文档和其他答案,但似乎无法正确解决。感谢帮助。干杯。

最佳答案

这是我的解决方案:

grpby = df.groupby(['date','Name'])
a = grpby.apply(lambda x: np.average(a = x['SharePrice'],weights=x['NoShares'])).to_frame(name='SharePrice')
b = grpby.agg({'NoShares':'sum','Volume':'mean','Relation':'max'})
print b.join(a)

Volume Relation NoShares SharePrice
date Name
2/1/10 yyy 5.0000 o 1 2.0000
zzz 1.5000 d 3 3.6667
2/5/10 vvv 1.0000 o 5 5.0000
www 1.0000 d 10 5.0000
xxx 1.0000 do 5 5.0000
2/6/10 zzz 3.0000 d 1 1.0000

之后只需 reset_index()。

关于python - 按组减少 Pandas 数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50976297/

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