Python 公差的最大值必须为整数

Python 公差的最大值必须为整数,python,pandas,Python,Pandas,我到处寻找,但找不到我要找的答案。我有两个数据帧,一个在A列(df2)中有相当离散的整数值,另一个没有(df1)。我希望合并这两个,这样当A列在1之内时,C列和D列中的值将合并一次,否则为NaN df1= A B 0 30.00 -52.382420 1 33.14 -50.392513 2 36.28 -53.699646 3 39.42 -49.228439 ..

我到处寻找,但找不到我要找的答案。我有两个数据帧,一个在A列(df2)中有相当离散的整数值,另一个没有(df1)。我希望合并这两个,这样当A列在1之内时,C列和D列中的值将合并一次,否则为NaN

df1=
         A             B
0      30.00      -52.382420
1      33.14      -50.392513
2      36.28      -53.699646
3      39.42      -49.228439
..      ...            ...
497   1590.58     -77.646561
498   1593.72     -77.049423
499   1596.86     -77.711639
500   1600.00     -78.092979

df2=
         A             C           D
0      0.009          NaN         NaN                     
1      0.036          NaN         NaN
2      0.100          NaN         NaN 
3     10.000         12.4        0.29 
4     30.000         12.82       0.307 
..       ...          ...         ...
315   15000.000        NaN        7.65
316   16000.000        NaN        7.72
317   17000.000        NaN        8.36
318   18000.000        NaN        8.35
我希望输出是

merged=
         A             B            C             D
0      30.00      -52.382420      12.82         0.29
1      33.14      -50.392513       NaN           NaN
2      36.28      -53.699646       NaN           NaN
3      39.42      -49.228439       NaN           NaN
..       ...          ...          ...           ...
497    1590.58    -77.646561       NaN           NaN
498    1593.72    -77.049423       NaN           NaN
499    1596.86    -77.711639       NaN           NaN
500    1600.00    -78.092979      28.51          2.5
我试过:

merged = pd.merge_asof(df1, df2, left_on='A', tolerance=1, direction='nearest')
这给了我一个合并错误:键必须是整数或时间戳

到目前为止,我能够成功合并数据帧的唯一方法是:

merged = pd.merge_asof(df1, df2, on='A')

但这会获取列C和D中足够接近的值,并填充NaN值。

对于其他面临类似问题的人,执行合并的列必须是整数。在我的例子中,这意味着必须将列A更改为int

df1['A Int'] = df1['A'].astype(int)
df2['A Int'] = df2['A'].astype(int)

merged = pd.merge_asof(df1, df2, on='A Int', direction='nearest', tolerance=1)