您可以使用
reindexwith
method='nearest'然后
merge:
A['date'] = pd.to_datetime(A.date)B['date'] = pd.to_datetime(B.date)A.sort_values('date', inplace=True)B.sort_values('date', inplace=True)B1 = B.set_index('date').reindex(A.set_index('date').index, method='nearest').reset_index()print (B1)print (pd.merge(A,B1, on='date')) ID_x date ID_y value0 B 1991-01-01 B 71 B 1999-08-02 C 12 A 2014-06-22 B 83 A 2014-07-02 A 54 C 2015-01-01 A 3您还可以添加参数
suffixes:
print (pd.merge(A,B1, on='date', suffixes=('_', ''))) ID_ date ID value0 B 1991-01-01 B 71 B 1999-08-02 C 12 A 2014-06-22 B 83 A 2014-07-02 A 54 C 2015-01-01 A 3


