如何在Pandas merge_asof中设置容差范围?

问题描述 投票:0回答:1

我正在尝试使用 pandas merge_asof 和容差级别合并两个时间序列数据。

Pandas 文档 很好地演示了如何使用容差,但我想知道是否可以使用一定范围的容差。

>>> quotes
                     time ticker     bid     ask
0 2016-05-25 13:30:00.023   GOOG  720.50  720.93
1 2016-05-25 13:30:00.023   MSFT   51.95   51.96
2 2016-05-25 13:30:00.030   MSFT   51.97   51.98
3 2016-05-25 13:30:00.041   MSFT   51.99   52.00
4 2016-05-25 13:30:00.048   GOOG  720.50  720.93
5 2016-05-25 13:30:00.049   AAPL   97.99   98.01
6 2016-05-25 13:30:00.072   GOOG  720.50  720.88
7 2016-05-25 13:30:00.075   MSFT   52.01   52.03

>>> trades
                     time ticker   price  quantity
0 2016-05-25 13:30:00.023   MSFT   51.95        75
1 2016-05-25 13:30:00.038   MSFT   51.95       155
2 2016-05-25 13:30:00.048   GOOG  720.77       100
3 2016-05-25 13:30:00.048   GOOG  720.92       100
4 2016-05-25 13:30:00.048   AAPL   98.00       100


>>> pd.merge_asof(trades, quotes,
...                       on='time',
...                       by='ticker',
...                       tolerance=pd.Timedelta('10ms'),
...                       allow_exact_matches=False)
                     time ticker   price  quantity     bid     ask
0 2016-05-25 13:30:00.023   MSFT   51.95        75     NaN     NaN
1 2016-05-25 13:30:00.038   MSFT   51.95       155   51.97   51.98
2 2016-05-25 13:30:00.048   GOOG  720.77       100     NaN     NaN
3 2016-05-25 13:30:00.048   GOOG  720.92       100     NaN     NaN
4 2016-05-25 13:30:00.048   AAPL   98.00       100     NaN     NaN

以上示例仅在时间间隙严格小于“10ms”时才合并,带有

direction='backward'

我想知道是否可以将 10 分钟到 20 分钟之间的范围与

direction='forward'
结合使用,以便合并 10 多分钟后但不到 20 分钟发生的最接近的一个?

编辑:我已将示例数据添加到帖子中(来自 Pandas 文档)。在上面的例子中,假设我想与“5ms”和“10ms”之间的 Timedelta 级别合并。

python pandas merge dask timedelta
1个回答
0
投票

你想出来了吗?我也有同样的疑问

© www.soinside.com 2019 - 2024. All rights reserved.