不规则时间序列data
存储在pandas.DataFrame
中。已设置DatetimeIndex
。我需要索引中连续条目之间的时间差。
我认为它会像
一样简单data.index.diff()
但得到了
AttributeError: 'DatetimeIndex' object has no attribute 'diff'
我试过
data.index - data.index.shift(1)
但得到了
ValueError: Cannot shift with no freq
在执行此操作之前,我不想先推断或强制执行频率。时间序列中存在较大的差距,这些差距将扩展为nan
的大量运行。重点是首先找到这些差距。
那么,做这个看似简单的操作的干净方法是什么?
答案 0 :(得分:6)
索引尚未实现diff
函数。
但是如果需要原始索引或Series
构造函数没有索引参数,如果需要默认索引值,则可以首先将Series
转换为rng = pd.to_datetime(['2015-01-10','2015-01-12','2015-01-13'])
data = pd.DataFrame({'a': range(3)}, index=rng)
print (data)
a
2015-01-10 0
2015-01-12 1
2015-01-13 2
a = data.index.to_series().diff()
print (a)
2015-01-10 NaT
2015-01-12 2 days
2015-01-13 1 days
dtype: timedelta64[ns]
a = pd.Series(data.index).diff()
print (a)
0 NaT
1 2 days
2 1 days
dtype: timedelta64[ns]
:
{{1}}
答案 1 :(得分:0)
这个问题有点老了,但是无论如何...
我使用numpy.diff(data.index)
来获取时间增量。工作正常。