gpt4 book ai didi

python - pandas:计算出每天每只股票的平均值和总值(value)

转载 作者:太空宇宙 更新时间:2023-11-03 17:33:25 27 4
gpt4 key购买 nike

我正在努力获取每天每只股票的交易量平均值和总值(value)。

我的数据就像

 ric    date    volume  
vod 7-17 43
vod 7-17 4444
vod 7-17 53
vod 7-18 66
vod 7-19 77
vod 7-19 29
... ... ...
bat 7-17 87
bat 7-18 99
... ... ...

我希望它转换为

ric    date    volume  day_v_vol    day_sum_vol
vod 7-17 43 1513 4541
vod 7-17 4444 1513 4541
vod 7-17 53 1513 4541
vod 7-18 66 66 66
vod 7-19 77 53 106
vod 7-19 29 53 106
... ... ... ... ...
bat 7-17 87 87 87
bat 7-18 99 99 99
... ... ... ... ...

我使用了“groupby”方法,

grouped=data.groupby(['ric','date'])
data['sumbas']=grouped.sum()
data['avbas']=grouped.mean()

但不是很方便。在“groupby”之后,我需要将新数据集与旧数据集合并。

谁能给我一些快速的方法,可以直接生成我想要的吗?提前致谢!

最佳答案

您可以使用 agg 传递要在 groupby 对象上执行的函数列表。

import numpy as np

grouped = df.groupby(['date', 'ric']).volume.agg([sum, np.mean])
grouped.columns = ['sumbas', 'avbas']

>>> grouped

sumbas avbas
date ric
7-17 bat 87 87
vod 4530 1510
7-18 bat 99 99
vod 66 66
7-19 vod 106 53

您仍然需要将其连接回原始 DataFrame:

>>>df.set_index(['date', 'ric']).join(grouped) 

volume sumbas avbas
date ric
7-17 bat 87 87 87
vod 43 4530 1510
vod 4444 4530 1510
vod 43 4530 1510
7-18 bat 99 99 99
vod 66 66 66
7-19 vod 77 106 53
vod 29 106 53

另一种方法是创建一个 groupby 对象,然后迭代调用 transform:

gb_vol = df.groupby(['date', 'ric'])['volume']
for f_name, func in zip(['daily_vol', 'davg_vol'],
[np.sum, np.mean]):
df[f_name] = gb_vol.transform(func)

>>> df
ric date volume daily_vol davg_vol
6 bat 7-17 87 87 87
0 vod 7-17 43 4530 1510
1 vod 7-17 4444 4530 1510
2 vod 7-17 43 4530 1510
7 bat 7-18 99 99 99
3 vod 7-18 66 66 66
4 vod 7-19 77 106 53
5 vod 7-19 29 106 53

关于python - pandas:计算出每天每只股票的平均值和总值(value),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31553317/

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