【发布时间】:2022-01-22 17:57:18
【问题描述】:
我想从数据框中删除所有不同的字符串并保留所有“相似”的字符串。
例如,我有这样的数据:
store_name
------------
Mcdonalds
KFC
Burger King
Mcdonald's
Mcdo
Taco bell
上面我们需要比较的商店是第一行Mcdonalds。有了这个,我们需要删除其他商店并保留与我们正在检查的商店相似的所有商店。
这是预期的输出:
store_name
------------
Mcdonalds
Mcdonald's
Mcdo
该过程将继续,直到它检查到Taco bell。
通过比较字符串相似度,我使用fuzzy-wuzzy 库。如果我们比较两个字符串并且它给出了 90+ 的相似率,那么我们将它标记为相似字符串。但是如何使用 drop 过滤掉整个数据框?
从两个字符串比较:
ratio = fuzz.token_set_ratio(string_1, string_2)
过滤整个数据框:
# TODO: ERROR on this since we are comparing dataframe, not string.
for index, row in data_df.iterrows():
copied_data_df = data_df.copy()
store_name = data_df['store_name']
copied_data_df.drop(fuzz.token_set_ratio(store_name, copied_data_df) >= 90, inplace=True)
【问题讨论】:
标签: python-3.x pandas dataframe fuzzy-search fuzzywuzzy