Pandas merge_asof 多个键

Pandas merge_asof on multiple keys

两个df来自不同频率的数据。

df1 :

    INNER_CODE  TRADEDATE   CLOSE_PRICE  
0   101000038   2020/12/14  1.2 
1   101000187   2020/12/14  2.3

df2 :
    INNER_CODE  CHANGEDATE  TOT_NUMS
0   101000038   2019/11/1   100
1   101000038   2020/12/1   110
2   101000038   2020/12/15  120
3   101000187   2019/11/1   200
4   101000187   2020/11/1   210
5   101000187   2020/12/18  220

我想在 df1.INNER_CODE=df2.INNER_CODE 上合并它们,df2.CHANGEDATEdf1.TRADEDATE 之前并且最接近 df1.TRADEDATE

My goal result is
    INNER_CODE  TRADEDATE   CLOSE_PRICE TOT_NUMS
0   101000038   2020/12/14  1.2        110
1   101000187   2020/12/14  2.3        210

我需要通过pandas来实现,而不是通过“sql外层应用”。我想到了一个替代方法,通过df1.apply(func)实现,但是它很耗内存而且太效率低下。是否可以通过类似merge_asof的pandas来实现?

谢谢。

问题已解决。 pd.merge_asof可以解决我的问题perfectly.The df1df2需要提前按照TRADEDATE和CHANGEDATE排序

pd.merge_asof(df1,df2,by='INNER_CODE',left_on='TRADEDATE',right_on='CHANGEDATE')
   INNER_CODE  TRADEDATE  CLOSE_PRICE CHANGEDATE  TOT_NUMS
0   101000038 2020-12-14          1.2 2020-12-01       110
1   101000187 2020-12-14          2.3 2020-11-01       210