5

データフレームの最初の列を2番目の列と一致させるためにPythonでパッケージをpandas使用しているデータフレームがあります。fuzzywuzzy

最初の列、2 番目の列、部分比率スコアで出力を作成する関数を定義しました。しかし、それは機能していません。

助けてください

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 の 2 つの列全体を呼び出しようとしています ( 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関数は Series を入力として受け入れますが、これは内部的に文字列に変換するためです。:)

于 2016-03-21T19:10:07.990 に答える