マージする必要がある2つの異なるデータフレームがあり、マージカラム( 'title')をマージする前にクリーンアップする必要があります。サンプルデータの例は次のようになります。マージの前にデータを消去するより良い方法はありますか?
data1 = pd.DataFrame({'id': ['a12bcde0','b20bcde9'], 'title': ['a.b. company','company_b']})
data2 = pd.DataFrame({'serial_number': ['01a2b345','10ab2030','40ab4060'],'title':['ab company','company_b (123)','company_f']})
期待どおり、マージは最初のタイトルでは成功しません。私はreplace()
メソッドを使用していましたが、綴りや大文字と小文字の区別などの理由で100個のタイトルを修正するため、非常に手早く扱いにくいです。
データのクリーンアップとマージに関するその他の提案はありますか?
全例:
import pandas as pd
import numpy as np
data1 = pd.DataFrame({'id': ['a12bcde0','b20bcde9'], 'title': ['a.b. company','company_b']})
data2 = pd.DataFrame({'serial_number': ['01a2b345','10ab2030','40ab4060'],'title':['ab company','company_b (123)','company_f']})
data2['title'].replace(regex=True,inplace=True,to_replace=r"\s\(.*\)",value=r'')
replacements = {
'title': {
r'a.b. company *.*': 'ab company'
}
}
data1.replace(replacements, regex=True, inplace=True)
pd.merge(data1, data2, on='title')
私はこれよりも良い方法を考えることはできません...あなたは何を想像していますか? – maxymoo
['fuzzywuzzy'](https://pypi.python.org/pypi/fuzzywuzzy)パッケージを使用し、例えば' ratio'関数を使用することができます。 – IanS