差异pandas.DateTimeIndex没有频率

时间:2018-03-14 12:34:29

标签: python pandas time-series data-science

不规则时间序列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的大量运行。重点是首先找到这些差距。

那么,做这个看似简单的操作的干净方法是什么?

2 个答案:

答案 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)来获取时间增量。工作正常。