Python 3.x 在不使用for循环的情况下,对某一特定指数进行加权平均
我想看看当一个大订单通过订单簿时,价格会有什么样的变动。我的订单簿快照数据如下所示:Python 3.x 在不使用for循环的情况下,对某一特定指数进行加权平均,python-3.x,pandas,Python 3.x,Pandas,我想看看当一个大订单通过订单簿时,价格会有什么样的变动。我的订单簿快照数据如下所示: bid_price bid_size ask_price ask_size level bid_size_cumsum ask_size_cumsum 2018-08-27 14:25:30+00:00 6717.49 0.735502 6717.50 56.117221 0 0.735502 56.117221 2018-
bid_price bid_size ask_price ask_size level bid_size_cumsum ask_size_cumsum
2018-08-27 14:25:30+00:00 6717.49 0.735502 6717.50 56.117221 0 0.735502 56.117221
2018-08-27 14:25:30+00:00 6717.22 0.300000 6717.56 0.018600 1 1.035502 56.135821
2018-08-27 14:25:30+00:00 6717.01 1.000000 6717.94 0.001000 2 2.035502 56.136821
2018-08-27 14:25:30+00:00 6717.00 2.500000 6718.30 0.001000 3 4.535502 56.137821
2018-08-27 14:25:30+00:00 6716.78 0.001000 6718.46 0.003000 4 4.536502 56.140821
2018-08-27 14:25:30+00:00 6716.25 0.617698 6718.95 2.225920 5 5.154200 58.366741
2018-08-27 14:25:30+00:00 6716.19 0.046394 6719.00 6.900000 6 5.200593 65.266741
2018-08-27 14:25:30+00:00 6715.00 0.001000 6719.20 0.001000 7 5.201593 65.267741
2018-08-27 14:25:30+00:00 6712.94 2.895080 6719.26 0.001000 8 8.096673 65.268741
2018-08-27 14:25:30+00:00 6710.98 1.033114 6719.96 0.001000 9 9.129787 65.269741
2018-08-27 14:25:30+00:00 6710.85 1.870000 6720.00 8.316950 10 10.999787 73.586691
2018-08-27 14:25:30+00:00 6710.78 0.306467 6720.01 0.001000 11 11.306254 73.587691
2018-08-27 14:25:30+00:00 6710.62 0.900000 6720.02 2.848228 12 12.206254 76.435919
这些级别是订单簿级别,因此级别0将位于订单簿的顶部。
比如说,如果我想通过出价卖出10个数量,我可以从出价金额中看出,当达到10级时,我将得到我的10个。现在我想计算平均投标价格,直到第10级。这将是投标价格投标规模的加权平均值。有没有一种方法可以在不使用For循环的情况下计算(bid\u price bid\u size)/总大小直到第10级?假设您的数据存储在
df
中。如果数据是数字,您可以将操作作为mult应用向您的数据中添加以下内容:
ten_rows = df[:10] # Slice first ten values from your data frame
result = ten_rows['bid_price'] * ten_rows['bid_size'] / ten_rows['bid_size_cumsum']
结果是目标加权平均数。
另外,如果您将得到一些类型错误
:df.dtypes
,请检查数据的数据类型。如果您计划使用数学运算符,它应该是int/float类型