使用fuzzywuzzy在dataframe中创建新列

Aba*_*cus 5 python pandas fuzzywuzzy

我有一个数据框pandas,我fuzzywuzzy在python中使用package来匹配数据框中的第一列和第二列.

我已经定义了一个函数来创建具有第一列,第二列和部分比率得分的输出.但它没有用.

能否请你帮忙

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)
Run Code Online (Sandbox Code Playgroud)

问候

-算盘

mel*_*oly 7

你传递了一个系列来处理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
Run Code Online (Sandbox Code Playgroud)

(有趣的是,该partial_ratio函数将接受一个Series作为输入,但只是因为它将其内部转换为字符串.:)