2016-03-21 3 views
3

У меня есть dataframe в pandas, где я использую пакет fuzzywuzzy в python для сопоставления первого столбца в dataframe со вторым столбцом.создать новый столбец в dataframe с помощью 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

ответ

4

Вы прошли серии для работы с внутри функции 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 

(Интересно, что функция partial_ratio будет принимать серии в качестве входных данных, но только потому, что он преобразует его внутренне в строку. :)

+0

Благодаря meloncholy. Это работает ! – Abacus

Смежные вопросы