使用 fuzzywuzzy 在数据框中创建新列
create new column in dataframe using fuzzywuzzy
我在 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)
此致
-算盘
您在 apply
函数中传递了一个 Series 来处理,代表此处的当前行。在您的代码中,您实际上忽略了这个 Series 并尝试每次使用 DataFrame 的两整列调用 partial_ratio
(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 作为输入,但这只是因为它在内部将其转换为字符串。:)
我在 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)
此致
-算盘
您在 apply
函数中传递了一个 Series 来处理,代表此处的当前行。在您的代码中,您实际上忽略了这个 Series 并尝试每次使用 DataFrame 的两整列调用 partial_ratio
(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 作为输入,但这只是因为它在内部将其转换为字符串。:)