我有以下数据框:
Row Bid_price Bid_volume Ask_price Ask_volume
2 2999.0 786.7 -500.0 1403.2
3 3000.0 786.7 -499.9 1407.2
4 2950.0 787.3 -250.1 1407.2
---------------------
56 125.1 2691 36.9 3113.1
57 125 2691.1 37 3133.1
---------------------
117 41.4 3029.7 2999 3835.7
118 40.05 3029.7 3000 3835.7
---------------------
123 39.4 3129.7 NaN NaN
124 36.1 3129.7 NaN NaN
125 36 3134.7 NaN NaN
我需要取第一组
Bid_price 和 Bid_volume (2999.0 和 786.7)
和所有的 Ask_price 和 Ask_volume
进行比较。只要 Bid_volume < Ask_volume AND Bid_price > Ask_price
,我就跳到下一组 Bid_price 和 Bid_volume
并再次与所有的 Ask_price 和 Ask_volume
进行比较。Bid_Price
递减,Bid_Volume
递增,Ask_Price
递增,Ask_Volume
递增。Bid_Price, Bid_Volume
长度相同,但 Ask_Price
和 Ask_Volume
较短。输出应为第一个满足条件的实例,即
Bid_volume is > Ask_volume AND Bid_price < Ask_price
。这在 line 124 中成立,与 line 56 的 Ask_Price 和 Ask_Volume
相匹配。期望的输出应为:
Row Bid_price Bid_volume
124 36.1 3129.7
Row Ask_price Ask_volume
56 36.9 3113.1
我的问题是我只能逐行地进行条件评估。这样返回的是空值:
BidAsk = BidAsk[(BidAsk["Bid_volume"] > BidAsk["Ask_volume"]) & (BidAsk["Bid_price"] < BidAsk["Ask_price"])]
BidAsk[["Bid_price","Bid_volume"]]
这里会产生一个回溯错误:
BidAsk = BidAsk.where((BidAsk["Bid_volume"] > BidAsk["Ask_volume"]) & (BidAsk["Bid_Price"] < BidAsk["Ask_Price"]))
BidAsk[["Bid_price", "Bid_volume"]]
非常感激您的任何帮助。谢谢!