将DatetimeIndex转换为Timedelta索引

时间:2017-09-19 17:30:57

标签: python python-3.x pandas

假设:

ts = pd.to_datetime(['2014-01-08 08:00:42',
                     '2014-01-08 08:01:00',
                     '2014-01-08 08:01:12'])

是否有规定的方法来获得每个元素之间的timedelta(最好是total_seconds属性)的结果?

我现在看起来过于冗长:

pd.Index((pd.Series(ts) - pd.Series(ts).shift())).total_seconds()
# Float64Index([nan, 18.0, 12.0], dtype='float64')

我并不关心结果数据结构类型,无论是列表,索引还是系列。

1 个答案:

答案 0 :(得分:1)

您可以这样使用np.diff

np.diff(ts.values).astype(int) / 1E9

array([ 18.,  12.])

或者

np.append(np.nan, np.diff(ts.values).astype(int) / 1E9)

array([ nan,  18.,  12.])