在python中应用模糊逻辑进行数据清理时,我面临一个问题。我的数据看起来像这样
data=pd.DataFrame({'Employer':['Deloitte','Accenture','Accenture Solutions Ltd','Accenture USA', 'Ernst & young',' EY', 'Tata Consultancy Services','Deloitte Uk'], "Count":['140','120','50','45','30','20','10','5']})
data
我使用模糊逻辑来比较数据框中的值。最终输出应有第三列,其结果如下:
data_out=pd.DataFrame({'Employer':['Deloitte','Accenture','Accenture Solutions Ltd','Accenture USA', 'Ernst & young',' EY', 'Tata Consultancy Services','Deloitte Uk'], "New_Column":["Deloitte",'Accenture','Accenture','Accenture','Ernst & young','Ernst & young','Tata Consultancy Services','Deloitte']})
data_out
因此,如果您看到,我希望出现次数较少的值有一个新条目作为一个新列,该列具有其类型中出现次数最多的值。这就是模糊逻辑有用的地方
使用模糊字符串匹配可以很容易地检测到大多数重复的公司,但是替换
Ernst & young <-> EY
实际上并不相似,这就是为什么我在这里忽略这个替换。此解决方案使用my libraryRapidFuzz,但您也可以使用FuzzyWuzzy实现类似的功能(只需编写一点代码,因为它没有ExtractIndexs处理器)这将导致以下数据帧:
我没有使用fuzzy,但可以提供以下帮助
资料
您没有解释塔塔为何保留全名。因此,我假设它是特殊的,并掩盖它
然后我使用np.where替换第一个名字后面的任何内容
输出
相关问题 更多 >
编程相关推荐