мы можем обсудить это решение? я не хочу вставлять его в комментарии
df1=pd.DataFrame(
{
'A':['my ','fire','water','earth','monkey'],
'B':[1,5,7,8,9],
'C':[100,105,110,182,140]
})
df2=pd.DataFrame(
{
'A':['drop','hold','push','pull','keep'],
'B':[1,4,4,10,10],
'C':[103,102,133,124,142]
})
df_1 = pd.merge_asof(df1,df2,on='B',direction='nearest',tolerance=2)
df_2 = pd.merge_asof(df1.sort_values(by='C'),df2.sort_values(by='C'),on='C',direction='nearest',tolerance=4)
df_3 = pd.merge_asof(df2,df1,on='B',direction='nearest',tolerance=2)
df_4 = pd.merge_asof(df2.sort_values(by='C'),df1.sort_values(by='C'),on='C',direction='nearest',tolerance=4)
# df= pd.merge_asof(df3.sort_values(by='C_x'),df4.sort_values(by='C'),left_on='C_x',right_on='C',direction='nearest',tolerance=4).dropna()
df_12 = pd.merge(df_1,df_2,on='A_x').dropna()
df_34 = pd.merge(df_3,df_4,on='A_x').dropna()
print(df_12)
A_x B C_x A_y_x C_y B_x C A_y_y B_y
0 my 1 100 drop 103.0 1 100 hold 4.0
1 fire 5 105 push 133.0 5 105 drop 1.0
4 monkey 9 140 pull 124.0 9 140 keep 10.0
print(df_34)
A_x B C_x A_y_x C_y B_x C A_y_y B_y
0 drop 1 103 my 100 1 103 fire 5.0
1 hold 4 102 fire 105 4 102 my 1.0
4 keep 10 142 monkey 140 10 142 monkey 9.0
df = pd.merge(df_12,df_34,left_index=True,right_index=True)
print(df[['A_x_x','A_x_y']])
A_x_x A_x_y
0 my drop
1 fire hold
4 monkey keep