使用熊猫将具有最接近编号的两个数据帧合并为一行?

Kal*_*nta 6 python dataframe pandas

我有两个数据框:

df1
col1      col2
 8         A
 12        C
 20        D

df2
col1     col3
 7        F
 15       G
Run Code Online (Sandbox Code Playgroud)

我想将col1上的这两个数据帧合并,以使df2和df1中最接近的col1值合并到一行中。

最终的数据帧看起来像

df
col1    col2    col3
 8        A      F
 12       C      G
 20       D      NA
Run Code Online (Sandbox Code Playgroud)

我可以使用for循环并比较数字来执行此操作,但是执行时间将非常长。

有没有任何Python方式可以做到这一点,所以运行时间将减少。一些熊猫捷径可能是。

jez*_*ael 6

使用merge_asofdirection='nearest'和宽容参数:

df = pd.merge_asof(df1, df2, on='col1', direction='nearest', tolerance=3)
print (df)
   col1 col2 col3
0     8    A    F
1    12    C    G
2    20    D  NaN
Run Code Online (Sandbox Code Playgroud)