如何根据模糊模糊分数更改列值

How to change column value based on fuzzy wuzzy score

我有一个数据框,其中有一列包括汽车品牌。我想应用 where 和 fuzzywuzzy 来改进数据。例如,如果一个条目与“梅赛德斯”一词有 80% 的匹配度,我希望将其替换为“梅赛德斯”一词。这是我目前所拥有的

df = df.where(fuzz.ratio(df['make'], "Mercedes") >= 80,"Mercedes")

我也试过这个

df.mask (df[fuzz.ratio(df['make'], 'Mercedes') >= 85], 'Mercedes', inplace=True)

我两次都遇到同样的错误

ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

df.where 是函数 https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.where.html。我想我明白了这个错误,我知道我的语法不正确,但我想不出另一种方法。同样最好,一个非常快速的方法是理想的,因为数据帧非常大

提前致谢

两件事:

  1. 您正在将整个系列传递给 fuzz.ratio(这会引发错误)。使用 applyfuzz.ratio 应用于系列值
  2. df.where替换条件为False的值,所以使用<80

这应该有效:

df.where(df['make'].apply(lambda x: fuzz.ratio(x, "Mercedes")) < 80,"Mercedes")