我有两个不同的数据框,我需要合并和合并列('标题')需要清理之前合并可能发生。示例数据示例如下所示;合并之前清理数据的更好方法是什么?
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