问题如下:
dt1 = {'shxydm':['111111111','2222222222','33333333','4444444444','55555555555'],'spmc':['AAAA,CCCC','BBBB,EEEE,FFFF','CCCC,AAAA,BBBB','JJJJ,MMMM,BBBB,AAAA,CCCC','BBBB,CCCC,EEEE,FFFF' ],'tj_hy':['','','','','']}
df1 = pd.DataFrame(dt1)
dt2 = {'hy_dm':['0987','0120','2324'],'hymc':['行业_1','行业_2','行业_3'],'spmc':['AAAA,BBBB,DDDD,FFFF,EEEE,CCCC,MMMM','CCCC,MMMM,FFFF,UUUU,EEEE,DDDD,JJJJ','BBBB,CCCC,NNNN,YYYY,MMMM,EEEE'],'hits':0}
df2=pd.DataFrame(dt2)
描述:以df1中每个企业的经销商品名称(spmc)在df2中查找spmc列,找出与之最匹配的前3个行业,并将这3个行业的编码和名称写到对应企业的tj_hy列内。
我现在的思路是:分两层遍历df1和df2,将df1中的每条数据的spmc的字符串作为一个集合,与由df2中spmc列每行字符串组成的集合
求交集,将交集中的元素个数写在df2相应行的hits 里,然后按hits排序(降序)求出前3个行业信息,并将其hy_dm 和hymc连接后写到df1的当前遍历行中的tj_hy(推荐行业)。
难点: 速度非常慢!!! 当df1有12万行,df2中有1000行时估计耗时2天。无法接受。
请高手指点!谢谢!
相似问题