如何在Pandas中重新采样和计算数量加权平均价格?

xv8emn3q  于 2023-06-28  发布在  其他
关注(0)|答案(1)|浏览(127)

我有一个交易数据框,其中每笔交易都有相应的金额和价格。如何在1分钟内对 Dataframe 进行重新采样,并计算每个时段的加权平均价格?

>df
                          amount     price
datetime                                  
2023-06-23 10:55:40.420  0.04657  30106.01
2023-06-23 10:55:42.348  0.00085  30104.54
2023-06-23 10:55:42.491  0.00368  30104.54
2023-06-23 10:55:43.211  0.03008  30104.54
2023-06-23 10:55:45.910  0.00035  30101.56
...                          ...       ...
2023-06-23 10:58:06.401  0.00863  30108.00
2023-06-23 10:58:06.661  0.00829  30108.00
2023-06-23 10:58:07.474  0.00305  30108.00
2023-06-23 10:58:07.599  0.00048  30108.00
2023-06-23 10:58:08.393  0.00041  30108.00

[428 rows x 2 columns]

我可以通过以下方式对交易金额重新采样:

>>> df['amount'].resample("1Min").sum()
datetime
2023-06-23 10:55:00     0.78885
2023-06-23 10:56:00    12.84216
2023-06-23 10:57:00     9.56456
2023-06-23 10:58:00     0.08334
Freq: T, Name: amount, dtype: float64

但是,根据每次交易的金额计算每个时期的平均价格的最佳解决方案是什么?

w1jd8yoj

w1jd8yoj1#

您可以计算金额 * 价格的平均值,然后除以每期金额的总和:

(df.eval('product = amount*price')[['amount', 'product']]
   .resample("1Min").sum()
   .eval('product/amount')
)

输出:

datetime
2023-06-23 10:55:00    30105.366872
2023-06-23 10:56:00             NaN
2023-06-23 10:57:00             NaN
2023-06-23 10:58:00    30108.000000
Freq: T, dtype: float64

最后一步之前的中间体(.eval('product/amount')):

amount      product
datetime                                 
2023-06-23 10:55:00  0.08153  2454.490561
2023-06-23 10:56:00  0.00000     0.000000
2023-06-23 10:57:00  0.00000     0.000000
2023-06-23 10:58:00  0.02086   628.052880

相关问题