Python 3でFuzzyWuzzyライブラリを使用しているときにエラーが発生しました.Pandasライブラリを使用してCSVファイルを処理しています。FuzzyWuzzyとPandasを文字列照合に使用した場合のTypeError
私はCSVファイルに次のデータがあります。CorporationNameとCorporationName2列
> BBL CorporationName CorporationName2
1 123 Elm St LLC 123 Elm St LLC
2 ABC Realty, INC ABC Realty, INC
3 123 Elm Street, LLC 123 Elm Street, LLC
4 ABC Realty Incorporated ABC Realty Incorporated
は実際には同じです。それぞれに不動産関連の事業名が含まれています。これらのビジネスの名前は、各列に複数回表示されますが、わかるように、時にはわずかに異なる表現で表示されることがあります。
私の目標は、各文字列をCorporationNameで取得し、それをCorporationName2のすべての文字列と比較することです。 FuzzyWuzzyがCorporationName2から5つの最も関連性の高い文字列(つまり、その名前の可能なバリエーション)を返すことを希望します。これは私が自分自身に課した大規模な文字列照合タスクの最初のステップに過ぎません。
> import pandas as pd
from fuzzywuzzy import process
from fuzzywuzzy import fuzz
import csv
df = pd.read_csv('yescorp_fuzz.csv')
test_list = df.CorporationName
test_list1 = df.CorporationName1
def ownermatch():
for i in test_list:
result = process.extract(i,test_list1, limit=5)
print(result)
ownermatch()
これは、トレースバックエラーです:
Traceback (most recent call last):
File "C:/Python34/YesCorpFuzzy4_15.py", line 17, in <module>
ownermatch()
File "C:/Python34/YesCorpFuzzy4_15.py", line 13, in ownermatch
result = process.extract(i,test_list1, limit=5)
File "C:\Python34\lib\site-packages\fuzzywuzzy\process.py", line 103, in extract
processed = processor(choice)
File "C:\Python34\lib\site-packages\fuzzywuzzy\utils.py", line 84, in full_process
string_out = StringProcessor.replace_non_letters_non_numbers_with_whitespace(s)
File "C:\Python34\lib\site-packages\fuzzywuzzy\string_processing.py", line 25, in replace_non_letters_non_numbers_with_whitespace
return cls.regex.sub(u" ", a_string)
TypeError: expected string or buffer
>>>
は完全に正直に言うと、私はここで何が起こっているのかわかりません。私はインターネットでもあまり見つけられませんでした。
ご提供いただけるお手伝いをいただければ幸いです。
ありがとうございます!
こんにちは@Sam、妙にそれはまだ同じエラーを返しています。どうやらそれは別のものです。 – Steven
@Stevenあなたのdfに他のデータ型を持たせることができますか? – Sam
そうだった。ありがとう! – Steven