Python 公差的最大值必须为整数
我到处寻找,但找不到我要找的答案。我有两个数据帧,一个在A列(df2)中有相当离散的整数值,另一个没有(df1)。我希望合并这两个,这样当A列在1之内时,C列和D列中的值将合并一次,否则为NaNPython 公差的最大值必须为整数,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 ..
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)