我在pandas
中有一个数据框,我在python中使用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)
此致
-Abacus
答案 0 :(得分:6)
你传递了一个系列来处理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
(有趣的是,{{1}}函数会接受一个Series作为输入,但只是因为它将内部转换为字符串。:)