使用fuzzywuzzy在dataframe中创建新列

时间:2016-03-21 18:27:02

标签: python pandas 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)

此致

-Abacus

1 个答案:

答案 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作为输入,但只是因为它将内部转换为字符串。:)