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类型