没有频率的差异 pandas.DateTimeIndex
Difference pandas.DateTimeIndex without a frequency
一个不规则的时间序列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
的大量运行。重点是先找到这些差距。
那么,做这个看似简单的操作的干净方法是什么?
索引尚未实现 diff
函数。
但是,如果您需要保留原始索引,可以先使用 Index.to_series
将索引转换为 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]
这个问题有点老了,但无论如何...
我使用 numpy.diff(data.index)
来获取时间增量。工作正常。
一个不规则的时间序列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
的大量运行。重点是先找到这些差距。
那么,做这个看似简单的操作的干净方法是什么?
索引尚未实现 diff
函数。
但是,如果您需要保留原始索引,可以先使用 Index.to_series
将索引转换为 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]
这个问题有点老了,但无论如何...
我使用 numpy.diff(data.index)
来获取时间增量。工作正常。