Pandas 计算DateTimeIndex的时差
我想计算DateTimeIndex中时间之间的时差Pandas 计算DateTimeIndex的时差,pandas,Pandas,我想计算DateTimeIndex中时间之间的时差 import pandas as pd p = pd.DatetimeIndex(['1985-11-14', '1985-11-28', '1985-12-14', '1985-12-28'], dtype='datetime64[ns]') 我可以计算两次的时差: p[1] - p[0] 给予 但是p[1:]-p[:-1]不起作用,并且给出 DatetimeIndex(['1985-12-28'], dtype='datetime64[
import pandas as pd
p = pd.DatetimeIndex(['1985-11-14', '1985-11-28', '1985-12-14', '1985-12-28'], dtype='datetime64[ns]')
我可以计算两次的时差:
p[1] - p[0]
给予
但是p[1:]-p[:-1]不起作用,并且给出
DatetimeIndex(['1985-12-28'], dtype='datetime64[ns]', freq=None)
以及未来的警告:
FutureWarning: using '-' to provide set differences with datetimelike Indexes is deprecated, use .difference()
有没有想过如何(轻松地)计算DateTimeIndex中值之间的时间差?为什么它只适用于1个值,而不适用于整个DateTimeIndex?操作符正在工作,它只是没有达到您期望的效果。在第二种情况下,它的作用是给出两个日期时间索引的差值,即
p[1://code>中的值,但不在p[:-1]
可能有更好的解决方案,但在执行操作元素时会起作用:
[e - k for e,k in zip(p[1:], p[:-1])]
使用将日期时间索引
转换为系列
,然后调用以计算行间差异:
In [5]:
p.to_series().diff()
Out[5]:
1985-11-14 NaT
1985-11-28 14 days
1985-12-14 16 days
1985-12-28 14 days
dtype: timedelta64[ns]
至于失败的原因,这里的-
操作符试图对不同的索引范围执行设置差分或交集,您试图从一个范围减去另一个范围的值,而diff
就是这样做的
当你做p[1]
-p[0]
时,-
是在执行标量减法,但当你对索引执行此操作时,它认为你在执行一个集合操作我使用无
来填充第一个差分值,但我相信你能想出如何处理这种情况
>>> [None] + [p[n] - p[n-1] for n in range(1, len(p))]
[None,
Timedelta('14 days 00:00:00'),
Timedelta('16 days 00:00:00'),
Timedelta('14 days 00:00:00')]
顺便说一句,要获得日差:
[None] + [(p[n] - p[n-1]).days for n in range(1, len(p))]
[None, 14, 16, 14]
[None] + [(p[n] - p[n-1]).days for n in range(1, len(p))]
[None, 14, 16, 14]