问题描述
我是 Python 编程的新手。我有一个以秒为单位的时间序列日期集,它从每天上午 9.15 开始到下午 3.30 结束。我正在尝试将其下采样到 1 分钟的时间范围。
原始数据集示例:
Px_NIFTY 20140130 0.0 FF Px_NIFTY 20140130 4500.0 CE \
Time
2014-01-01 09:15:01 6364.329167 NaN
2014-01-01 09:15:02 6366.776471 NaN
2014-01-01 09:15:03 6367.158824 1854.0
2014-01-01 09:15:04 6368.134211 1854.0
2014-01-01 09:15:05 6367.355000 NaN
... ... ...
2014-01-31 15:29:55 NaN NaN
2014-01-31 15:29:56 NaN NaN
2014-01-31 15:29:57 NaN NaN
2014-01-31 15:29:58 NaN NaN
2014-01-31 15:29:59 NaN NaN
当我使用 resample 将采样下采样到 1 分钟时间范围时,它会在下午 3.30 之后使用 nans 创建新行,直到第二天上午 9 点 15 分。我试图在论坛中找到答案,但没有成功。
我用来重新采样的代码:
df.resample('1T',label='right').last()
我得到的输出不正确:
Px_NIFTY 20140130 0.0 FF Px_NIFTY 20140130 4500.0 CE \
Time
2014-01-14 05:36:00 NaN NaN
2014-01-14 05:37:00 NaN NaN
2014-01-14 05:38:00 NaN NaN
2014-01-14 05:39:00 NaN NaN
2014-01-14 05:40:00 NaN NaN
... ... ...
2014-01-18 17:51:00 NaN NaN
2014-01-18 17:52:00 NaN NaN
2014-01-18 17:53:00 NaN NaN
2014-01-18 17:54:00 NaN NaN
2014-01-18 17:55:00 NaN NaN
数据集只有每天上午 9.15 到下午 3.30 的条目。
解决方法
您能否检查以下内容是否适合您:
df = (df.groupby(df.index.date).resample('T',label='right').last()
.reset_index(level=0,drop=True))
按天分组 (.date
) 将 resample
限制为组的“本地”范围,一天。否则,resample
会在几天之间填补空白,这将影响其整体结果。