如何从pandas数据框文本列提取多个指定字符串存入列表字段
pandas多材质匹配代码修改方案
原有代码的问题
- 冗余的字符遍历逻辑:代码中
for i in temp是遍历描述文本的单个字符,所有判断逻辑均针对完整文本,该循环无实际作用 - 互斥判断逻辑错误:使用
elif做条件判断,只要第一个条件匹配成功,后续所有材质判断都会直接跳过,无法同时匹配多个材质 - 返回时机错误:
return lst写在循环内部,第一次条件判断结束就直接返回结果,不会执行后续的材质匹配逻辑
修改后的完整代码
import pandas as pd data = {'Product Description': [': da tổng hợp, khung gỗ sồi canada.', ': gỗ mfc phủ melamine, chân thép sơn tĩnh']} df = pd.DataFrame(data) def add_material(row): lst = [] temp = row['Product Description'] # 每个材质做独立if判断,支持同时匹配多个 if 'da tổng hợp' in temp: lst.append('Synthetic Leather') if 'gỗ sồi' in temp: lst.append('Oak') if 'gỗ mfc phủ melamine' in temp: lst.append('Melamine coated MFC Wood') if 'chân thép' in temp: lst.append('Steel') # 所有判断完成后再返回结果 return lst df['Material'] = df.apply(add_material, axis = 1)
运行后df['Material']输出完全符合预期:
0 [Synthetic Leather, Oak] 1 [Melamine coated MFC Wood, Steel] Name: Material, dtype: object
内容的提问来源于stack exchange,提问作者astonle
相关产品推荐
相关产品推荐

