没有频率的pandas.DateTimeIndex的区别[英] Difference pandas.DateTimeIndex without a frequency

本文是小编为大家收集整理的关于没有频率的pandas.DateTimeIndex的区别的处理方法,想解了没有频率的pandas.DateTimeIndex的区别的问题怎么解决?没有频率的pandas.DateTimeIndex的区别问题的解决办法?那么可以参考本文帮助大家快速定位并解决问题。

问题描述

不规则的时间序列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构造器.

代码示例:

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)获得时间deltas.正常工作.

本文地址:https://www.itbaoku.cn/post/1727874.html