Pandas DataFrame重采样时间区间偏移问题咨询
Pandas重采样时间标签偏移问题解答
问题描述
原始DataFrame
ticker_name price timestamp_column 2024-02-01 18:34:58 NIFTY_08-FEB-2024_CE_21000 85.0 2024-02-01 18:34:55 NIFTY_08-FEB-2024_CE_21000 84.0 2024-02-01 18:34:52 NIFTY_08-FEB-2024_CE_21000 83.0 2024-02-01 18:34:49 NIFTY_08-FEB-2024_CE_21000 82.0 2024-02-01 18:34:46 NIFTY_08-FEB-2024_CE_21000 81.0 ... ... ... 2024-02-01 18:30:58 NIFTY_08-FEB-2024_CE_21000 5.0 2024-02-01 18:30:55 NIFTY_08-FEB-2024_CE_21000 4.0 2024-02-01 18:30:52 NIFTY_08-FEB-2024_CE_21000 3.0 2024-02-01 18:30:49 NIFTY_08-FEB-2024_CE_21000 2.0 2024-02-01 18:30:46 NIFTY_08-FEB-2024_CE_21000 1.0
重采样代码
df_resample = df['price'].resample('10s').ohlc()
重采样结果
open high low close timestamp_column 2024-02-01 18:30:40 1.0 2.0 1.0 2.0 2024-02-01 18:30:50 3.0 5.0 3.0 5.0 2024-02-01 18:31:00 6.0 8.0 6.0 8.0 2024-02-01 18:31:10 9.0 12.0 9.0 12.0 .... 2024-02-01 18:34:20 73.0 75.0 73.0 75.0 2024-02-01 18:34:30 76.0 78.0 76.0 78.0 2024-02-01 18:34:40 79.0 82.0 79.0 82.0 2024-02-01 18:34:50 83.0 85.0 83.0 85.0
用户疑问
时间标签2024-02-01 18:30:40对应的OHLC数据实际属于18:30:40至18:30:50区间,但预期应该对应18:30:30至18:30:40区间,所有行都存在该偏移问题,这是预期行为还是操作有误?
解答
这是Pandas重采样的预期行为。
Pandas默认采用左闭右开的区间划分规则,重采样后的时间标签是区间的左端点。比如标签18:30:40对应的区间是[18:30:40, 18:30:50),所有落在这个区间内的原始数据都会被归入该标签下——你的原始数据中18:30:46、18:30:49正好属于这个区间,所以对应的OHLC数据会被标记为18:30:40。
如果希望时间标签对应区间的右端点(即让18:30:50代表[18:30:40, 18:30:50)的区间),只需在重采样时添加label='right'参数:
df_resample = df['price'].resample('10s', label='right').ohlc()
这样处理后,区间数据的标签会变为该区间的结束时间,符合你对标签对应区间的预期。
内容的提问来源于stack exchange,提问作者keerthan kumar
相关产品推荐
相关产品推荐

