Python 排序后必须对关键字进行排序错误

Python 排序后必须对关键字进行排序错误,python,pandas,merge,Python,Pandas,Merge,我想将目标列从一个数据帧合并到另一个数据帧。合并的数据帧有更多的关键点,它们很接近,但与原始数据帧不完全匹配。请参见下面的示例: 原始数据帧(FDMA) 合并数据帧(ZC) 这就是我所期待的 DMA Distance (Miles) 130506 303.87 130510 291.83 130512 XXX 130555 XXX 130556 XXX 我尝试了上面的代码,得到了一个ValueError:右键必须排序错误。我已经对值进行了排序并重置了索引,但仍然得到了错误。感

我想将目标列从一个数据帧合并到另一个数据帧。合并的数据帧有更多的关键点,它们很接近,但与原始数据帧不完全匹配。请参见下面的示例:

原始数据帧(FDMA)

合并数据帧(ZC)

这就是我所期待的

DMA     Distance (Miles)
130506  303.87
130510  291.83
130512  XXX
130555  XXX
130556  XXX
我尝试了上面的代码,得到了一个ValueError:右键必须排序错误。我已经对值进行了排序并重置了索引,但仍然得到了错误。感谢您的帮助

对于错误代码“ValueError:必须对正确的键进行排序”,最有效的解决方案是在“键”列的“合并”中添加
sort_值

pd.merge_asof(FDMA,ZC[['DMA','Distance (Miles)']].sort_values('DMA'),on='DMA')

这确保了数据帧按照
pd.merge\u asof

的要求在连接键上进行排序。此外,当您的
on
列中有NA时,pandas将出现相同的错误,因此在合并之前,您应该使用
df.dropna()
来解决此问题。

pd.merge\u asof(FDMA,ZC['DMA','Distance(Miles)]]对值进行排序('DMA')),on='DMA')
非常感谢斯科特!成功了。您能告诉我这与在尝试合并前对每个数据帧进行排序有什么不同吗?嗯,这不应该有什么不同,我只是想澄清一下,您是根据联接键排序的,而不是索引排序的。很抱歉立即进行了后续操作,但我注意到一些值不正确。只要合并的值有一个额外的数字,它就不起作用。例如,130506将合并与130510与1305060相关的值。有没有一个简单的方法来解决这个问题,或者这应该是另一个问题?人力资源管理。。。我不确定我是否完全理解,但合并是整数、浮点数或日期时间上的连接,因此在数字行上有一个额外的数字是非常遥远的。你能把多余的数字修剪一下吗?
DMA     Distance (Miles)
130506  303.87
130510  291.83
130512  XXX
130555  XXX
130556  XXX
pd.merge_asof(FDMA,ZC[['DMA','Distance (Miles)']].sort_values('DMA'),on='DMA')