如何根据模糊模糊分数更改列值
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。我想我明白了这个错误,我知道我的语法不正确,但我想不出另一种方法。同样最好,一个非常快速的方法是理想的,因为数据帧非常大
提前致谢
两件事:
- 您正在将整个系列传递给
fuzz.ratio
(这会引发错误)。使用 apply
将 fuzz.ratio
应用于系列值
df.where
替换条件为False
的值,所以使用<80
这应该有效:
df.where(df['make'].apply(lambda x: fuzz.ratio(x, "Mercedes")) < 80,"Mercedes")
我有一个数据框,其中有一列包括汽车品牌。我想应用 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。我想我明白了这个错误,我知道我的语法不正确,但我想不出另一种方法。同样最好,一个非常快速的方法是理想的,因为数据帧非常大
提前致谢
两件事:
- 您正在将整个系列传递给
fuzz.ratio
(这会引发错误)。使用apply
将fuzz.ratio
应用于系列值 df.where
替换条件为False
的值,所以使用<80
这应该有效:
df.where(df['make'].apply(lambda x: fuzz.ratio(x, "Mercedes")) < 80,"Mercedes")