Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将DatetimeIndex转换为Timedelta索引_Python_Python 3.x_Pandas - Fatal编程技术网

Python 将DatetimeIndex转换为Timedelta索引

Python 将DatetimeIndex转换为Timedelta索引,python,python-3.x,pandas,Python,Python 3.x,Pandas,鉴于: 是否有规定的方法获得每个元素之间的时间差(最好是total_seconds属性) 我现在所说的似乎过于冗长: ts = pd.to_datetime(['2014-01-08 08:00:42', '2014-01-08 08:01:00', '2014-01-08 08:01:12']) 我并不真正关心生成的数据结构类型,无论是列表、索引还是系列。您可以这样使用np.diff pd.Index((pd

鉴于:

是否有规定的方法获得每个元素之间的时间差(最好是
total_seconds
属性)

我现在所说的似乎过于冗长:

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

我并不真正关心生成的数据结构类型,无论是列表、索引还是系列。

您可以这样使用
np.diff

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


ts.to_series().diff().dt.total_seconds().values
?@Zero为什么不提交答案?我预先准备了一个
np.nan
,但增加了您需要的详细信息
np.append(np.nan,(np.diff(ts.values)//1E9).astype(int))
我想,因为我们已经准备好了,
[np.nan]+(np.diff(ts.values)//1E9).tolist()
也许吧?我认为你的第一个建议和我的建议没有什么不同。我使用
astype(int)
来摆脱
timedelta[ns]
。在那之后,我不认为你选演员的顺序会改变最终的结果。对于你的第二个建议,我不能确定没有测试。。。但是我愿意打赌性能会受到影响。啊,
np.diff(ts.values)。astype(int)//1E9
给我
数组([0.,-1.])
因此要求移动
astype
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.])