按日期合并数据框
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
我有以下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