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

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]

ss.index[1:] - ss.index[:-1]


但是这是输出,我不明白

<class 'pandas.tseries.index.DatetimeIndex'>
[2014-01-03]
Length: 1, Freq: None, Timezone: None


我最终做了这个(有点难看)

tmp = pd.Series( ss.index[1:] ) - pd.Series( ss.index[:-1] )
(tmp[0] == tmp ).all()


所以我有两个问题:


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

最佳答案

这是一个略有不同的方法。如果可以的话,将返回一个频率(例如,如果这些值每天间隔无孔,则返回其每天的频率)。 None否则。

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'

关于python - 如何在 Pandas 时间索引中发现漏洞,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23782771/

10-11 18:49