5

我有一个数据框pandas,我在其中使用fuzzywuzzypython 中的包来匹配数据框中的第一列与第二列。

我已经定义了一个函数来创建具有第一列、第二列和部分比率分数的输出。但它不起作用。

能否请你帮忙

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)

问候

-算盘

4

1 回答 1

8

您在apply函数内部传递了一个可以使用的系列,代表此处的当前行。在您的代码中,您实际上忽略了这个 Series 并尝试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函数将接受一个系列作为输入,但这只是因为它在内部将其转换为字符串。:)

于 2016-03-21T19:10:07.990 回答