问题标签 [fuzzywuzzy]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
csv - 使用 FuzzyWuzzy 和 Pandas 进行字符串匹配时出现 TypeError
在 Python 3 中使用 FuzzyWuzzy 库时出现错误。我正在使用 Pandas 库处理 CSV 文件。
我的 CSV 文件中有以下数据:
CorporationName 和 CorporationName2 列实际上是相同的。它们每个都包含房地产相关企业的名称。这些企业的这些名称在每一列中出现多次,但正如您所见,它们有时以略有不同的表现形式出现。
我的目标是获取 CorporationName 中的每个字符串,并将其与 CorporationName2 中的所有字符串进行比较。我希望 FuzzyWuzzy 从 CorporationName2 返回 5 个最相关的字符串(即该名称的可能变体)。这只是我所经历的大规模字符串匹配任务的第一步。
这是回溯错误:
老实说,我不确定这里发生了什么。我在互联网上也找不到太多。
您能提供的任何帮助将不胜感激。
谢谢!
python - 模糊模块不适合我
我遇到了这个模糊模块的问题, 因为当我尝试运行代码的第二部分时:
它给出了这样的错误:
当我尝试运行最后一部分时,第二个:
它给出了这样的错误:
除了这两个之外,所有其他代码都运行良好。我该如何解决?我目前正在使用 ubuntu 14.04LTS 和 Spyder 来运行 python。
编辑:我试图重新安装 levenshtein、fuzzywuzzy 和 difflib 模块。仍然会出现同样的问题。是因为我用的是ubuntu吗?因为当我尝试使用双启动 Windows 10 运行时,它可以工作!
python - 使用fuzzywuzzy在数据框中创建一列匹配结果
我遇到了使用 FuzzyWuzzy 库将所有结果存储在数据框列中的挑战(我猜它可能需要一个循环?)我整天都在摸不着头脑,现在我想看看你们中是否有人可以帮助我解决问题!会超级有帮助的!
作为我正在尝试做的一个示例,这里有 2 个数据框表……</p>
主表
查找表
本质上,我正在尝试针对主表中的整个值列表使用查找表的值,并将结果存储在第三个表中。
这就是我希望最终输出的样子......
我知道 Fuzzy Wuzzy 的基础知识,我是这样开始的:
输出= [('鸡肉沙拉', 90), ('原味沙拉', 90)]
太好了,但是您如何以系统的方式做到这一点,针对主表中的所有值运行我的所有查找值?
非常感谢您阅读我的内容!
python - 如何在 Pandas 中使用 apply 并行化许多(模糊)字符串比较?
我有以下问题
我有一个包含句子的数据框主控,例如
对于 Master 中的每一行,我使用fuzzywuzzy
. 我使用了fuzzywuzzy,因为两个数据帧之间的匹配句子可能会有所不同(额外的字符等)。
例如,奴隶可以是
这是一个功能齐全、精彩、紧凑的工作示例 :)
100 万美元的问题是:我可以并行化上面的应用代码吗?
毕竟,其中的每一行都master
与其中的所有行进行比较slave
(从属数据集是一个小数据集,我可以将许多数据副本保存到 RAM 中)。
我不明白为什么我不能运行多重比较(即同时处理多行)。
问题:我不知道该怎么做,或者那是否可能。
非常感谢任何帮助!
python - Dask:非常低的 CPU 使用率和多线程?这是预期的吗?
我正在使用如何在 Pandas 中使用 apply 并行化许多(模糊)字符串比较dask
?
基本上我做了一些计算(不向磁盘写入任何内容)调用Pandas
和Fuzzywuzzy
(如果有帮助的话,显然可能不会释放 GIL)并且我运行类似:
但是,代码的一个变体现在已经运行了 10 个小时,还没有结束。我在 Windows 任务管理器中注意到
RAM utilization
相当低,对应于我的数据大小CPU usage
每 2/3 秒左右从 0% 反弹到最多 5%- 我
20 Python processes
的大小约为 100MB,一个 Python 进程可能包含 30GB 大小的数据(我有一台 128GB 的机器,8 核 CPU)
问题是:这种行为是预期的吗?我在这里设置一些dask
选项显然是非常错误的吗?
当然,我知道具体情况取决于我到底在做什么,但也许上面的模式已经可以说明某些事情是非常错误的?
非常感谢!!
python - 如何将电影标题与 difflib 和 pandas 进行模糊匹配?
我有 2 个可能重叠的电影标题列表,但可能以不同的形式编写。
它们位于熊猫的 2 个不同数据框中。因此,我尝试像这样将map()
函数与fuzzywuzzy
库一起使用:
这给出了一些高质量的结果。但是时间复杂度如此之高,以至于我只能在两个数据帧的一个非常小的子集上运行它。当我尝试增加数据帧的大小时,它会迅速变得无法使用。
然后我尝试fuzzywuzzy
用difflib
. 而且速度要快得多。但我无法得到我想要的结果。
起初我试过:
这很快,但结果的质量很差。甚至遗漏了一些简单的大写/小写更改。玩的cutoff
没有帮助。
所以我以为我使用了错误的工具。在我看到的get_close_matches
用于单个单词的文档和示例中。标题中有各种各样的词。
是SequenceMatcher
更好的选择吗?
如果是,那么我如何将其放入 中map()
,使其与上述功能相同:仅返回最佳结果,并且仅在结果高于某个比率时才返回?
python - 通过 Python 中的模糊字符串匹配匹配 2 个大型 csv 文件
我正在尝试将大约 600,000 个个人姓名(全名)与另一个拥有超过 8700 万个观察值(全名)的数据库进行匹配!
我第一次尝试使用fuzzywuzzy库太慢了,所以我决定使用更快的模块fuzzyset 。假设我有一台功能强大的计算机可以将所有数据集加载到内存中,我将使用包含 964 个观测值的测试文件与 50,000 个观测值进行匹配来执行以下操作:
使用更小的数据集(964 个观测值与 50,000 个观测值匹配),时间为39 秒。
但是,如果我想在整个数据集上执行此方法,这太慢了。
有谁知道如何提高运行时间?我认为 Cython 是不可能的,因为我已经导入了 Cython 版本的模糊集模块
非常感谢,
阿德里安
python - 在数据框列中应用模糊匹配并将结果保存在新列中
我有两个数据框,每个数据框都有不同的行数。下面是来自每个数据集的几行
和
我并排使用combined_data = pandas.concat([df1, df2], axis = 1)
. 我的下一个目标是使用模块中的几个不同匹配命令将每个字符串与下面df1['Company']
的每个字符串进行比较,并返回最佳匹配的值及其名称。我想将其存储在新列中。例如,如果我执行and on ,它将返回最佳匹配的得分为,然后将其保存在新列下df2['FDA Company']
fuzzy wuzzy
fuzz.ratio
fuzz.token_sort_ratio
LACKY SHEET METAL
df1['Company']
df2['FDA Company']
LACKY SHEET METAL
100
combined data
. 结果看起来像
我试着做
但是由于列的长度不同而出现错误。
我难住了。我怎么能做到这一点?