计算两行之间的时间差

6
我正在尝试通过使用shift()计算两行之间的时间差,但是我遇到了意外的错误。也许我漏掉了一些明显的东西。
df['Delta'] = (df.index - df.index.shift(1))

这个语句会产生一个 "ValueError: Cannot shift with no offset" 错误。我缺少了什么?
2个回答

5
两件事情:
- 如果您有一个DatetimeIndex,shift将按照一定时间间隔移动您的数据。如果您的索引没有频率,则必须使用freq关键字向shift方法提供频率(例如,freq='s'将使数据向后移动一秒钟)。 - 您不能像这样减去两个索引对象,因为这会给您一个差集操作:http://pandas.pydata.org/pandas-docs/stable/indexing.html#set-operations-on-index-objects 如果您只想获取索引中两个连续值之间的差异,可以使用diff方法(对于Series来说比shift和substract要简单一些):
df['index_col'] = df.index
df['Delta'] = df['index_col'].diff()

4

或许有点令人困惑的是,在1.0版本之前,Series.shiftIndex.shift的功能并不完全相同,后者只对TimeSeries有意义。最简单的方法可能是将你的索引添加为一列。

df['index_col'] = df.index
df['Delta']=(df['index_col'] - df['index_col'].shift(1))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接