如何根据模糊模糊评分改变列值



我有一个包含汽车制造商的列的数据框架。我想申请和fuzzywuzzy改善数据的地方。例如,如果条目与单词Mercedes的匹配度为80%,我希望将其替换为单词Mercedes。这是我目前看到的

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。其中是函数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")

最新更新