按日期合并数据框

Merge dataframes by dates

我有以下2个df:

lst=[['2021-01-01','A'],['2021-01-01','B'],['2021-02-01','A'],['2021-02-01','B'],['2021-03-01','A'],['2021-03-01','B']]
df1=pd.DataFrame(lst,columns=['Date','Pf'])

lst=[['2021-02-01','A','New']]
df22=pd.DataFrame(lst,columns=['Date','Pf','Status'])

我想合并它们以获得下面的 df:

lst=[['2021-01-01','A','NaN'],['2021-01-01','B','NaN'],['2021-02-01','A','New'],['2021-02-01','B','NaN'],['2021-03-01','A','New'],['2021-03-01','B','NaN']]
df3=pd.DataFrame(lst,columns=['Date','Pf','Status'])

对于 2021-02-01 期间,可以应用合并公式。但是,我想通过更改等于和大于 2021-02-01

的日期,在出现与 df2 中相同的 Pf 后立即获得相同的状态“新”

你知道我该如何解决这个问题吗? 感谢您的帮助

默认使用 merge_asof direction='backward':

df1['Date'] = pd.to_datetime(df1['Date'])
df22['Date'] = pd.to_datetime(df22['Date'])

df = pd.merge_asof(df1, df22, on='Date', by='Pf')
print (df)
        Date Pf Status
0 2021-01-01  A    NaN
1 2021-01-01  B    NaN
2 2021-02-01  A    New
3 2021-02-01  B    NaN
4 2021-03-01  A    New
5 2021-03-01  B    NaN