我已经四处寻找,但找不到我想要的答案。我有两个数据帧,一个在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')
这给了我一个MergeError:key必须是整数或时间戳。
到目前为止,我能够成功合并数据帧的唯一方法是:
merged = pd.merge_asof(df1, df2, on='A')
但这会占据C和D列中足够接近的值并填充NaN值。
答案 0 :(得分:0)
对于有类似问题的其他人,执行合并的列必须是整数。就我而言,这意味着必须将A列更改为int。
{{1}}