1 回答

TA貢獻1785條經驗 獲得超4個贊
這是pd.merge_asof在首先處理重復項之后。排序'A1'然后在 上刪除重復項'B1','A1'為每個唯一的留下最大的值'B1':
import pandas as pd
#df2 = df2.sort_values('B2') # If not sorted by `B2`
pd.merge_asof(df2,
df1.sort_values('A1').drop_duplicates('B1', keep='last').sort_values('B1'),
left_on='B2', right_on='B1', direction='forward')
輸出:
A2 B2 A1 B1
0 -69.06 -12.64 -128.65 -12.30
1 -86.88 -12.12 -117.74 -11.98
2 -95.95 -11.35 -109.43 -10.03
3 -103.87 -10.67 -109.43 -10.03
4 -105.78 -9.63 -87.27 -9.33
5 -108.11 -9.20 -85.59 -5.96
6 -111.07 -9.06 -85.59 -5.96
7 -126.42 -6.37 -85.59 -5.96
如果您需要保持原來的順序,可以考慮重置索引,以便在合并后將其添加為列,然后將其設置回原位并對索引進行排序。
添加回答
舉報