Python 基于数据帧中的次要时间增量获取值

Python 基于数据帧中的次要时间增量获取值,python,pandas,datetime,Python,Pandas,Datetime,我使用的是一个由两个不同的datetime对象索引的大数据帧,如下图所示,假设日期列是datetime序列: 但是我想得到date2列和date1列的差异较小的行。date2列只能大于或等于date1。期望的输出是: Var1 Var2 date1 date2 d1 d5 v1 v6 d2 d7 v3 v8 获取两个级别的差异,如有必要,获取绝对值,并获取每组第一个最小值的索引,最后查看LCT行的索引: 不带辅

我使用的是一个由两个不同的datetime对象索引的大数据帧,如下图所示,假设日期列是datetime序列:

但是我想得到date2列和date1列的差异较小的行。date2列只能大于或等于date1。期望的输出是:

            Var1 Var2
date1 date2          
d1    d5      v1   v6
d2    d7      v3   v8

获取两个级别的差异,如有必要,获取绝对值,并获取每组第一个最小值的索引,最后查看LCT行的索引:

不带辅助列的解决方案,带辅助系列:

            Var1 Var2
date1 date2          
d1    d5      v1   v6
d2    d7      v3   v8
df['diff'] = np.abs(df.index.get_level_values('date1') - df.index.get_level_values('date2'))

df1 = df.loc[df.groupby(level=0)['diff'].idxmin()]
lev1 = df.index.get_level_values('date1') 
lev2 = df.index.get_level_values('date1') 

s = pd.Series(np.abs(lev1- lev2), index=df.index)

df1 = df.loc[s.groupby(lev1).idxmin()]