如何查找panda中后续每对DataFrame.index值之间的差异



我创建了一个DataFrame来处理一些数据,我想在DataFrame中找到每对数据之间的时间差。在使用panda之前,我使用了两个numpy数组,一个描述数据,另一个描述时间(一个datetime.datetimes数组)。对于数组中的数据,我可以执行timearray[1:] - timearray[:-1],这导致了一个数组(由n-1个元素组成)来描述每对数据之间的时间间隔。

在熊猫身上,做DataFrame.index[1] - DataFrame.index[0]可以得到我想要的结果——我挑选的两个指数之间的时间差。然而,执行DataFrame.index[1:] - DataFrame.index[:-1]不会产生类似结果的数组,而是简单地等于DataFrame.index[-1]。为什么会这样,我如何才能在熊猫身上复制这种愚蠢的行为?

或者,在大熊猫的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')将日期列临时设置为一列(如果需要)。

最新更新