根据不工作的字典创建新列



我有以下数据框架:

df = pd.DataFrame()
data = {'Description':['CERVEZA DORADA BOTELLA NR 24 UNIDADES 350ML', 'BEBIDA DE ALMENDRA COCO SILK 1/6/946 ML WHITE WAVE (1788 UNIDADES)', 'ADES SOYA ORAN TETRA 200MLX10',
'ADES SOYA NATURAL TETRA', 'ADES COCO TETRA']}
df = pd.DataFrame(data)
print (df)

我使用以下代码(字典)创建一个基于特定品牌名称的新列(在本例中为Ades) -在Pandas str.contains中找到的解决方案-在字符串中搜索多个值并在新列中打印值)

brands =['Ades']
def matcher(x):
for i in brands:
if i.lower() in x.lower():
return i
else:
return np.nan
df['Brands'] = df['Description'].apply(matcher)

创建列并应用字典,但不正确。

结果:

,到目前为止,如果它发现ADES的任何组合(如UNIDADES),它就会说是ADES。我想要完成的只是Ades,而不是这两个词的任何组合。这是一个简单的组合,但我有超过1000万张唱片和不同的品牌。如何设置字典只查找那个单词而不是一个组合?

谢谢。

创建一个正则表达式模式提取:

# (?i) insensitive, b word boundary
pat = fr"(?i)b({'|'.join(brands)})b"
df['Brand'] = df['Description'].str.extract(pat, expand=False)
print(df)
# Output
Description Brand
0        CERVEZA DORADA BOTELLA NR 24 UNIDADES 350ML   NaN
1  BEBIDA DE ALMENDRA COCO SILK 1/6/946 ML WHITE ...   NaN
2                      ADES SOYA ORAN TETRA 200MLX10  ADES
3                            ADES SOYA NATURAL TETRA  ADES
4                                    ADES COCO TETRA  ADES

相关内容

  • 没有找到相关文章

最新更新