【发布时间】:2021-08-19 12:40:15
【问题描述】:
我被这个问题困住了,应该有一个简单的解决方案,但我找不到它。
我有两个数据框:
dfA
| Company | Country Code |
|---|---|
| CompanyA | IT |
| CompanyB | DE |
| CompanyC | DE |
| CompanyD | SE |
dfB
| Company | Country Code |
|---|---|
| Company A | IT |
| Company B | DE |
| Company C | DE |
| Company D | SE |
Dataframe B 包含公司名称的正确拼写,因此我尝试使用fuzzywuzzy 库进行匹配。到目前为止,我得到了很好的相似度分数,但我想通过仅比较具有相同国家代码的公司来进一步提高它们。
这是我目前一直在运行的代码:
import pandas as pd
from fuzzywuzzy import process, fuzz
actual_name = []
similarity = []
for i in dfA["Company"]:
ratio = process.extract( i, dfB["Company"], limit=1)
actual_name.append(ratio[0][0])
similarity.append(ratio[0][1])
dfA['actual_name'] = pd.Series(actual_name)
dfA['similarity'] = pd.Series(similarity)
如何改进我的代码,以便仅当 i dfA["Country Code"] == dfB["Country Code"] 时才比较公司名称?
【问题讨论】:
-
最简单的解决方案是先遍历国家代码,按国家代码过滤数据,然后对过滤后的数据集进行模糊匹配。
-
您好,感谢您的意见。主要问题是我的编码技能不是那么先进。我试图写一些东西,但我的代码永远不会工作。你有什么建议/链接我可以检查一下吗?
标签: python pandas fuzzywuzzy