我有兩個不同的數據框,我需要合併和合並列('標題')需要清理之前合併可能發生。示例數據示例如下所示;合併之前清理數據的更好方法是什麼?
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