如何解决尝试将ID分配给pandas DataFrame中的对,结果不一致
df = pd.DataFrame({'src':['LV','LA','NC','NY','ABC','XYZ'],'dest':['NC','LV','XYZ','ABC'],'dummy':[1,3,6,7,8,10]})
src dest dummy
LV NC 1
LA NY 3
NC LV 6
NY LA 7
ABC XYZ 8
XYZ ABC 10
我通过以下方式运行它:
df['pair'] = df[['src','dest']].apply(lambda x : tuple(set(x)),1).factorize()[0] + 1
尝试取消唯一对,例如(a-> b,b-> a)
我正确地以这个结尾:
src dest dummy pair
LV NC 1 1
LA NY 3 2
NC LV 6 1
NY LA 7 2
ABC XYZ 8 3
XYZ ABC 10 3
但是,有时当我运行它时,我最终会出错:
src dest dummy pair
LV NC 1 1
LA NY 3 2
NC LV 6 1
NY LA 7 2
ABC XYZ 8 3
XYZ ABC 10 4
如您所见,由于某种原因,最后一个元素未正确配对为“ 3”。这是随机发生的。我可以通过注释掉“配对”代码,运行脚本以制作和打印df,然后取消注释并再次尝试来重现此代码。通过运行其他修改,您也许可以通过其他方式重现此内容。
如何解决这种不确定性行为?
解决方法
尝试使用set
的问题,您可以将其更改为frozenset
df['pair'] = pd.DataFrame(np.sort(df[['src','dest']].values,1)).agg(tuple,1).factorize()[0]+1
Out[108]: array([1,2,1,3,3],dtype=int64)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。