我有一个这样的时间序列:
idx = pd.DatetimeIndex(['01:55:00', '02:25:00', '03:20:00', '02:35:00'])
ts = Series([1, 2, 3, 4], index=idx)
ts
2019-04-20 01:55:00 1
2019-04-20 02:25:00 2
2019-04-20 03:20:00 3
2019-04-20 02:35:00 4
dtype: int64
当我使用带有参数"2T"resample
函数时,groups
这样的字典:
r = ts.resample('2T')
r.groups
{Timestamp('2019-04-20 01:54:00', freq='2T'): 1,
Timestamp('2019-04-20 01:56:00', freq='2T'): 1,
...
}
第一个时间戳是'01:54:00',当我更改参数时,第一个时间戳也会更改。
r = ts.resample('5T')
r.groups
{Timestamp('2019-04-20 01:55:00', freq='5T'): 1,
Timestamp('2019-04-20 02:00:00', freq='5T'): 1,
...
}
r = ts.resample('15T')
r.groups
{Timestamp('2019-04-20 01:45:00', freq='15T'): 1,
Timestamp('2019-04-20 02:00:00', freq='15T'): 1,
...
}
我不知道规则是什么。我搜索了熊猫的文档并用谷歌搜索,但没有找到答案。
我发现熊猫在这种情况下的第一个和最后一个 Timestamp.In 做了一些复杂的事情,简化的代码如下:
from pandas.tseries.frequencies import to_offset
first = pd.Timestamp('2019-04-20 01:55:00')
offset = to_offset('35T')
start_day_nanos = first.normalize().value
foffset = (first.value - start_day_nanos) % offset.nanos
fresult = first.value - foffset
pd.Timestamp(fresult)
Timestamp('2019-04-20 01:45:00')