3

現在、2 つのデータ フレームがあります。fuzzywuzzy の process.extractOne 関数を使用して、クライアント名のあいまい一致を取得しようとしています。サンプル データに対して次のスクリプトを実行すると、良好な結果が得られ、エラーは発生しませんが、現在のデータ フレームに対して次のスクリプトを実行すると、属性エラーとタイプ エラーの両方が発生します。セキュリティ上の理由からデータを提供することはできませんが、提供されたスクリプトに基づいてエラーが発生する理由を誰かが理解できる場合、私は大いに義務付けられます.

names2 = list(dftr3['Common Name'])
names3 = dict(zip(names2,names2))
def get_fuzz_match(row):
            match = process.extractOne(row['CLIENT_NAME'],choices = n3.keys(),score_cutoff = 80)
            if match:
                return n3[match[0]]
            return np.nan    
 dfmi4['Match Name'] = dfmi4.apply(get_fuzz_match, axis=1)

いくつかの例がないとトラブルシューティングが難しくなることはわかっているので、質問に答えて投稿を編集し、このプロセスに役立つようにします. 具体的なエラーは次のとおりです。

1.AttributeError: 'dict_keys' オブジェクトには属性 'items' がありません

2.TypeError: 文字列またはバッファが必要です

4

1 に答える 1

1

AttributeError は簡単で、当然のことだと思います。で実際の作業のほとんどを行うFuzzywuzzy のprocess.extract関数は、句をprocess.extractOne使用して、パラメーターを dict のように処理するかリストのように処理するかを決定します。句の中で TypeError が発生するため、例外が発生していると思います。try:... except:choicesexcept:

TypeError を突き止めるのは難しいですが、モジュールでStringProcessor使用されているクラスのどこかで発生していると思われます。そのため、呼び出しが文字列ではないものを渡している可能性があります。空のセルがある可能性はありますか?processorextractapply

于 2016-01-09T10:01:13.323 に答える