2016-03-21 15 views
3

Ich habe einen Datenrahmen in pandas, wo ich fuzzywuzzy Paket in Python verwenden, um erste Spalte im Datenrahmen mit der zweiten Spalte übereinstimmen.neue Spalte im Datenrahmen mit fuzzywuzzy erstellen

Ich habe eine Funktion definiert, um eine Ausgabe mit der ersten Spalte, der zweiten Spalte und einem Teilverhältnis zu erstellen. Aber es funktioniert nicht.

Könnten Sie bitte

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) 

Grüße eine Serie helfen arbeiten mit in der apply Funktion, die die aktuelle Zeile hier

-Abacus

Antwort

4

Sie übergeben. In Ihrem Code ignorieren Sie diese Serie effektiv und versuchen, mit den zwei ganzen Spalten des DataFrame jedes Mal partial_ratio aufzurufen (driver[col]).

Eine kleine Änderung an Ihrem Code sollte Ihnen hoffentlich geben, was Sie wollen.

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 

(Interessanterweise ist die partial_ratio Funktion wird eine Serie als Eingabe akzeptieren, aber nur, weil sie es intern in einen String umwandelt. :)

+0

Dank meloncholy. Das funktioniert ! – Abacus

Verwandte Themen