如何解决用于匹配的 Python 数据帧合并
我希望从两个数据帧中生成匹配对,这样没有两对是相同的,甚至单个值也不会在任何其他对中重复。匹配的关键是'cntr-size'和'carrier'。
例如:
import_v = pd.DataFrame({
'cntr_no':[1,2,3,4,5,6,7,8],'cntr_size':[40,40,20,20],'carrier': ['MSK','MSK','MSC','CMA','MSK']
})
export_v = pd.DataFrame({
'cntr_no':[9,10,11,12,13,14,15,16,17,18,19,'HLL','MSK']
})
如果我合并 -
potential = pd.merge(import_v,export-v,on=['cntr_size','carrier'])
我得到的输出 -
[Out I Get][1]
cntr_no_x cntr_size carrier cntr_no_y
0 1 40 MSK 9
1 1 40 MSK 10
2 1 40 MSK 12
3 1 40 MSK 13
4 1 40 MSK 17
5 2 40 MSK 9
6 2 40 MSK 10
7 2 40 MSK 12
8 2 40 MSK 13
9 2 40 MSK 17
10 4 40 MSK 9
11 4 40 MSK 10 .... so on
12 4 40 MSK 12
13 4 40 MSK 13
14 4 40 MSK 17
我想要的输出 -
cntr_no_x cntr_size carrier cntr_no_y
0 1 40 MSK 9
1 2 40 MSK 10
2 4 40 MSK 12
所以 cntr_no_x
和 cntr_no_y
都应该是唯一的并且不会重复
解决方法
解决方案来自-
cntr_list_i=[]
cntr_list_e=[]
match_scale['status']=""
for ind in match_scale.index:
if (match_scale.loc[ind,'container_no_x']) not in cntr_list_i and (match_scale.loc[ind,'container_no_y']) not in cntr_list_e:
match_scale.loc[ind,'status']=True
cntr_list_i.append(match_scale.loc[ind,'container_no_x'])
cntr_list_e.append(match_scale.loc[ind,'container_no_y'])
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。