我有一个数据框pandas
我在哪里使用fuzzywuzzy
将数据框中的第一列与第二列相匹配。
我定义了一个函数来创建具有第一列、第二列和部分比率分数的输出。但它不起作用。
能否请你帮忙
import csv
import sys
import os
import numpy as np
import pandas as pd
from fuzzywuzzy import fuzz
from fuzzywuzzy import process
def match(driver):
driver["score"]=driver.apply(lambda row: fuzz.partial_ratio(row driver[driver.columns[0]], driver[driver.columns[1]]), axis=1)
print(driver)
return(driver)
Regards
-算盘
您将通过一个系列在内部工作apply
函数,代表此处的当前行。在您的代码中,您实际上忽略了这个系列并尝试调用partial_ratio
每次使用 DataFrame 的两整列(driver[col]
).
对您的代码进行微小的更改应该有望给您带来您想要的结果。
d = DataFrame({'one': ['fuzz', 'wuzz'], 'two': ['fizz', 'woo']})
d.apply(lambda s: fuzz.partial_ratio(s['one'], s['two']), axis=1)
0 75
1 33
dtype: int64
(有趣的是,partial_ratio
函数将接受 Series 作为输入,但这只是因为它在内部将其转换为字符串。 :)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)