数据1:商品名称
ids = [x for x in range(5)]
name = ['新疆 肠子 伊犁 马肠 马肉 哈萨克 风味 美食 开袋 即食',
'新疆 伊犁 伊卡 马肠 马肉 马肠 哈萨克族 生薰 马肠 清真 肉类 马肉',
'新疆 烤马 肠子 马肉 孜然 开袋 即食 特产小吃 香辣 零食 切片 烤肉 18 0g',
'澳华 奶粉 开口 鱼虾 幼苗 鱼苗 种苗 蛙苗 鱼花 开口 渔药 训料 虾苗',
'天然 食用 螺旋藻片 观赏虾 水晶 虾苗 鱼苗 开口 鱼食 增色 鱼饲料'
]
validation1 = pd.DataFrame(data = name,columns = ['name'],index = ids )
validation1
数据2:id及对应关键词
ids = [x for x in range(2)]
name_list = {
'ncpcat_id':['14011101005','14011101006'],
'ncpcat_name_3':['马肉','鱼苗']
}
validation2 = pd.DataFrame(data = name_list,index = ids)
validation2
生成训练集:
# 检查完毕,之前写错了两点:没有必要的两重循环 (解决:enumerate());concat 操作应该放到循环内
df_test = pd.DataFrame(columns = ['name','ncpcat_id','ncpcat_name_3'])
length = len(validation2)
for index,x in enumerate(validation2['ncpcat_name_3'].values):
temp_df = validation1[validation1['name'].str.contains(x) == True].iloc[:,:1]
temp_df.columns = ['name']
temp_df['ncpcat_id'] = validation2['ncpcat_id'][index]
temp_df['ncpcat_name_3'] = validation2['ncpcat_name_3'][index]
frames = [df_test,temp_df]
df_test = pd.concat(frames,ignore_index = True)
df_test