如何找到 pandas 中每对后续 DataFrame.index 值之间的差异?

How to find the difference between each subsequent pair of DataFrame.index values in pandas?

为了处理一些数据,我创建了一个DataFrame,我想找出DataFrame中每对数据之间的时间差。在使用 pandas 之前,我使用了两个 numpy 数组,一个描述数据,另一个描述时间(一个 datetime.datetimes 的数组)。使用数组中的数据,我可以做 timearray[1:] - timearray[:-1],这会产生一个数组(包含 n-1 个元素),描述每对数据之间的时间间隔。

在pandas中,做DataFrame.index[1] - DataFrame.index[0]得到了我想要的结果——我选择的两个索引之间的时间差。但是,执行 DataFrame.index[1:] - DataFrame.index[:-1] 不会产生类似结果的数组,而只是等于 DataFrame.index[-1]。为什么会这样,我该如何复制 pandas 中的 numpy 行为?

或者,在 pandas 中的 DataFrame 中查找数据间隙的最佳方法是什么?

您可以使用 shift 来偏移日期并使用它来计算行之间的差异。

# create dummy data
import pandas as pd
rng = pd.date_range('1/1/2011', periods=90, freq='h')
# shift a copy of the date column and subtract from the original date
df = pd.DataFrame({'value':range(1,91),'date':rng})
df['time_gap'] = df['date']- df['date'].shift(1)

要使用此功能,可通过使用 .reset_index().set_index('date') 将日期列临时设置为一个列,如果需要,return 将日期列设置为索引。