如何在下一个最高键值上合并数据帧

How to merge dataframes on the next highest key value

我有 df1:

a
2013
2014
2015

和 df2

a
2014
2017
2018
2021

我的目标是将 df1 中的键 a 合并到 df2 中的下一个最高键,例如2013->2014、2014->2017 和 2015->2017。因此,即使两个键相等,我也想在下一个最高的键上合并,这可能吗?

使用 merge_asofdirection='forward' 和参数 allow_exact_matches=False:

df = pd.merge_asof(df1, df2.rename(columns={'a':'a1'}),
                   left_on='a', 
                   right_on='a1',
                   direction='forward',
                   allow_exact_matches=False)
print (df)
      a    a1
0  2013  2014
1  2014  2017
2  2015  2017