Python 如何在时间索引中查找漏洞

Python 如何在时间索引中查找漏洞,python,pandas,Python,Pandas,我很想知道时间索引是否包含漏洞。假设我有以下系列 ss = pd.Series( nr.randn(3), index=[ '2014-01-01', '2014-01-02', '2014-01-03' ] ) ss.index = pd.to_datetime( ss.index ) ss 输出 2014-01-01 0.976455 2014-01-02 -0.610322 2014-01-03 -0.631592 dtype: float64 我想我可以用列表做我想做的

我很想知道时间索引是否包含漏洞。假设我有以下系列

ss = pd.Series( nr.randn(3), index=[ '2014-01-01', '2014-01-02', '2014-01-03' ] )
ss.index = pd.to_datetime( ss.index )
ss
输出

2014-01-01    0.976455
2014-01-02   -0.610322
2014-01-03   -0.631592
dtype: float64
我想我可以用列表做我想做的事(
l[1:]-l[:-1]

但这是输出,我不明白

<class 'pandas.tseries.index.DatetimeIndex'>
[2014-01-03]
Length: 1, Freq: None, Timezone: None
所以我有两个问题:

  • ss.index[1:]-ss.index[:-1]
    在做什么
  • 有没有更好的方法来做我正在做的事情

您可以使用
numpy.diff()

也许有一些稍微巧妙的方法可以做到这一点,但上面的方法是有效的。它给你:

array([86400000000000, 86400000000000], dtype='timedelta64[ns]')
你可以试试

tDelta = ss.index.date[1:]-ss.index.date[:-1]
secondBetweenEachEntries = [t.total_seconds() for t in tDelta]
那就

import pandas as pd
import numpy.random as nr
ss = pd.Series( nr.randn(3), index=[ '2014-01-01', '2014-01-02', '2014-01-03' ] )
ss.index = pd.to_datetime( ss.index )
tDelta = ss.index.date[1:]-ss.index.date[:-1]

这是一种稍有不同的方法。如果可以,将返回一个频率(例如,如果值是每日间隔且无孔的,则返回其每日频率)<代码>无否则

In [14]: pd.infer_freq(Series(np.random.randn(3),index=['20140101','20140102','20140103']).index)
Out[14]: 'D'

In [15]: pd.infer_freq(Series(np.random.randn(3),index=['20140101','20140102','20140104']).index)

In [31]: pd.infer_freq(Series(np.random.randn(3),index=['20140101','20140201','20140301']).index)
Out[31]: 'MS'
tDelta = ss.index.date[1:]-ss.index.date[:-1]
secondBetweenEachEntries = [t.total_seconds() for t in tDelta]
import pandas as pd
import numpy.random as nr
ss = pd.Series( nr.randn(3), index=[ '2014-01-01', '2014-01-02', '2014-01-03' ] )
ss.index = pd.to_datetime( ss.index )
tDelta = ss.index.date[1:]-ss.index.date[:-1]
In [14]: pd.infer_freq(Series(np.random.randn(3),index=['20140101','20140102','20140103']).index)
Out[14]: 'D'

In [15]: pd.infer_freq(Series(np.random.randn(3),index=['20140101','20140102','20140104']).index)

In [31]: pd.infer_freq(Series(np.random.randn(3),index=['20140101','20140201','20140301']).index)
Out[31]: 'MS'