我正在尝试使用shift()
计算两行之间的时差,但是我收到了意外错误。我可能会遗漏一些明显的东西
df['Delta'] = (df.index - df.index.shift(1))
此语句生成ValueError: Cannot shift with no offset
。我错过了什么?
答案 0 :(得分:4)
两件事:
shift
会将您的数据移动一段时间。如果您的索引没有频率,则必须使用freq
关键字(例如freq='s'
)将移位方法提供给移位方法,以便将数据移位一秒钟。如果您只想要索引中两个连续值之间的差异,可以使用diff
方法(系列,比移位和减法更容易):
df['index_col'] = df.index
df['Delta'] = df['index_col'].diff()
答案 1 :(得分:2)
也许令人困惑的是,Series.shift和Index.shift并没有完全做同样的事情,后者只是为TimesSeries有意义地定义。可能最容易将索引添加为列。
df['index_col'] = df.index
df['Delta']=(df['index_col'] - df['index_col'].shift(1))