Pandas重采样与自定义体积加权聚集

2024-09-30 12:11:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试基于5秒的时间步进进行量加权价格聚合,我有多个数据点。我可以通过传递聚合类型的dict来获得单个字段的简单平均值和和聚合。但是,要生成一个量加权聚合,我需要同时使用pricing和volume字段来为每个步骤生成此值。在

                    TS          P           Q
D           
2018-01-01 00:00:00 1514764800  1673574.0   0.164012
2018-01-01 00:00:00 1514764800  1673954.0   0.006000
2018-01-01 00:00:00 1514764800  1673967.0   0.005808
2018-01-01 00:00:00 1514764800  1673949.0   0.040000
2018-01-01 00:00:00 1514764800  1673573.0   0.159234
2018-01-01 00:00:00 1514764800  1673569.0   0.007000
2018-01-01 00:00:00 1514764800  1673949.0   0.100000
2018-01-01 00:00:00 1514764800  1673569.0   0.008000
2018-01-01 00:00:00 1514764800  1673949.0   0.033000
2018-01-01 00:00:00 1514764800  1673346.0   0.033000
2018-01-01 00:00:01 1514764801  1673967.0   0.212200
2018-01-01 00:00:02 1514764802  1673954.0   0.006765
2018-01-01 00:00:03 1514764803  1673950.0   0.012000
2018-01-01 00:00:03 1514764803  1673955.0   0.005700
2018-01-01 00:00:03 1514764803  1673642.0   0.031197
2018-01-01 00:00:03 1514764803  1673949.0   0.067654

数量加权公式应该是数量x价格的累计和除以该期间的总数量。在

有没有一种方法可以通过使用价格和数量序列的自定义聚合来返回VWAP?在

如有任何建议,谢谢!在


Tags: 数据方法类型数量时间步骤序列价格
1条回答
网友
1楼 · 发布于 2024-09-30 12:11:26

使用.apply可以编写任何您想要的自定义聚合函数。在

def vwap(data):
    return (data.P * data.Q).sum() / data.Q.sum()

使用grouper时,可以这样应用:

^{pr2}$

对于重采样,.apply也可以使用:

df.resample("5s").apply(vwap)

相关问题 更多 >

    热门问题