【发布时间】:2017-03-21 09:56:58
【问题描述】:
我有两个不同的数据框需要合并,合并列(“标题”)需要在合并发生之前进行清理。示例数据示例如下所示;
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')
【问题讨论】:
-
我想不出比这更好的方法了……你在想什么?
-
你可以使用
fuzzywuzzy包,例如使用ratio函数。
标签: python pandas replace merge