排序后,pandas merge_asof键必须排序错误

Jos*_*jua 4 python merge pandas

我想将目标列从一个数据框合并到另一个数据框。合并的数据帧具有更多的密钥,并且它们很接近,但是与原始数据帧不完全匹配。请参阅以下示例:

原始数据帧(FDMA)

DMA 
130506  
130510  
130512  
130555  
130556  
Run Code Online (Sandbox Code Playgroud)

合并数据框(ZC)

DMA        Distance (Miles)
1305060    303.87
1305061    305.35
1305062    278.80
1305065    299.94
1305067    291.83

pd.merge_asof(FDMA,ZC[['DMA','Distance (Miles)']],on='DMA')
Run Code Online (Sandbox Code Playgroud)

这就是我所期望的

DMA     Distance (Miles)
130506  303.87
130510  291.83
130512  XXX
130555  XXX
130556  XXX
Run Code Online (Sandbox Code Playgroud)

我已经尝试了上面的代码并得到ValueError:右键必须排序错误。我已经排序了值并重置了索引,但仍然收到错误。任何帮助表示赞赏!

Sco*_*ton 7

使用错误代码“ ValueError:必须对正确的键进行排序”,最有效的解决方案是sort_values在keys列上添加合并:

pd.merge_asof(FDMA,ZC[['DMA','Distance (Miles)']].sort_values('DMA'),on='DMA')
Run Code Online (Sandbox Code Playgroud)

这样可确保数据框按要求按连接键排序pd.merge_asof