我偶然发现了我一直在引用的这篇文章:Apply fuzzy matching across a dataframe column and save results in a new column。我正在引用的代码在答案部分,使用模糊的模糊和熊猫。它使用模糊模糊来资助2个数据帧中的重复行。我旨在修改此代码,以便可以检查单个数据框中的行重复项。这是我到目前为止的代码:
from fuzzywuzzy import fuzz
from fuzzywuzzy import process
import pandas as pd
import SQLAlchemy
import pyodbc
con =
sqlalchemy.create_engine('mssql+pyodbc://(localdb)\\LocalDBDemo/master?
driver=ODBC+Driver+13+for+SQL+Server')
compare = pd.read_sql_table(PIM, con)
def metrics(tup):
return pd.Series([fuzz.ratio(*tup),
fuzz.token_sort_ratio(*tup)],
['ratio', 'token'])
compare.apply(metrics)
#df1
#compare.apply(metrics).unstack().idxmax().unstack(0)
#df2
#compare.apply(metrics).unstack(0).idxmax().unstack(0)
任何帮助将不胜感激!我还是个菜鸟,所以请多多包涵。谢谢!
答案 0 :(得分:1)
尝试一个名为pandas-dedupe的软件包。使用模糊匹配和机器学习。
https://pypi.org/project/pandas-dedupe/
我知道您的问题很老,但是上述软件包仍然可以提供帮助。
最后找到解决方案了吗?
答案 1 :(得分:0)
我同意@SCool。 pandas-dedupe 是一个非常好的库,可以做到这一点。下面是一个例子:
import pandas as pd
import pandas_dedupe
df = pd.DataFrame({'name': ['Franc', 'Frank', 'John', 'Michelle', 'Charlotte', 'Carlotte', 'Jonh', 'Filipp', 'Charles', 'Diana', 'Robert', 'Carles', 'Michele']})
dd = pandas_dedupe.dedupe_dataframe(
df,
field_properties = ['name'],
canonicalize=True
)
pandas-dedupe 会要求将一些示例标记为不同的或重复的。完成后,它将通过返回旧名称、规范化名称以及对结果的置信度来处理重复数据删除。
我知道这个问题很老,但我希望一个例子可以帮助人们更快地找到解决问题的方法。