如何找到 pandas 中每对后续 DataFrame.index 值之间的差异?
How to find the difference between each subsequent pair of DataFrame.index values in pandas?
为了处理一些数据,我创建了一个DataFrame
,我想找出DataFrame
中每对数据之间的时间差。在使用 pandas 之前,我使用了两个 numpy 数组,一个描述数据,另一个描述时间(一个 datetime.datetime
s 的数组)。使用数组中的数据,我可以做 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 将日期列设置为索引。
为了处理一些数据,我创建了一个DataFrame
,我想找出DataFrame
中每对数据之间的时间差。在使用 pandas 之前,我使用了两个 numpy 数组,一个描述数据,另一个描述时间(一个 datetime.datetime
s 的数组)。使用数组中的数据,我可以做 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 将日期列设置为索引。