- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我试图弄清楚是否有一种方法可以根据 difflib SequenceMatcher 比例对 Pandas 中的字符串进行模糊合并。基本上,我有两个数据框,如下所示:
df_a
company address merged
Apple PO Box 3435 1
df_b
company address
Apple Inc PO Box 343
我想像这样合并:
df_c = pd.merge(df_a, df_b, how = 'left', on = (difflib.SequenceMatcher(None, df_a['company'], df_b['company']).ratio() > .6) and (difflib.SequenceMatcher(None, df_a['address'], df_b['address']).ratio() > .6)
有一些帖子与我正在寻找的内容很接近,但没有一个适合我想要做的事情。关于如何使用 difflib 进行这种模糊合并有什么建议吗?
最佳答案
可能有效的方法:测试列值的所有组合的部分匹配。如果存在匹配,则为 df_b 分配一个键以进行合并
df_a['merge_comp'] = df_a['company'] # we will use these as the merge keys
df_a['merge_addr'] = df_a['address']
for comp_a, addr_a in df_a[['company','address']].values:
for ixb, (comp_b, addr_b) in enumerate(df_b[['company','address']].values)
if difflib.SequenceMatcher(None,comp_a,comp_b).ratio() > .6:
df_b.ix[ixb,'merge_comp'] = comp_a # creates a merge key in df_b
if difflib.SequenceMatcher(None,addr_a, addr_b).ratio() > .6:
df_b.ix[ixb,'merge_addr'] = addr_a # creates a merge key in df_b
现在您可以合并
merged_df = pandas.merge(df_a,df_b,on=['merge_addr','merge_comp'],how='inner')
关于python - 使用 difflib SequenceMatcher 比率在 Pandas 中合并,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31734484/
我尝试执行以下代码:(在 python 中) from difflib import SequenceMatcher as sm class myint(int): def __cmp__(s
我正在尝试使用 Python 的 SequenceMatcher 查找两个字符串之间的匹配 block 。字符串为 "ABCDPQRUVWXYZ" 和 "PQRABCDUVWXYZ"。但是,当我应用
我试图将一组字符串与一组已定义的字符串进行比较。例如,您想要查找一封信件的收件人,该信件的文本通过 OCR 数字化。 有一个地址数组,其中有字典作为元素。每个元素都是唯一的,包含 ID、姓名、街道、邮
我修补了一个列表,使其看起来像另一个列表: a = [x for x in "qabxcd"] b = [x for x in "abycdf"] c = a[:] s = SequenceMatch
在 Python 中解压 SequenceMatcher 循环结果以便轻松访问和处理值的最佳方法是什么? from difflib import * orig = "1234567890" comme
想知道解决这个特定问题的最佳方法以及是否有任何库(最好是 python,但如果需要我可以灵活处理)。 我有一个文件,每一行都有一个字符串。我想找到最长的常见模式及其在每一行中的位置。我知道我可以使用
import difflib a='abcd' b='ab123' seq=difflib.SequenceMatcher(a=a.lower(),b=b.lower()) seq=difflib.S
我正在寻找一种比较两个字符串的方法。但不是简单的 equals()。我需要一些指标来说明那些与 String 匹配的可能性有多大。因此,例如(值是一个未计算的猜测): 《汽车》和《汽车》重播1.0 “
我想在 Python 中生成文本修订(更具体地说,Markdown 格式的文章)之间的差异。 我想以类似于 Github 的方式格式化此差异 我查看了 difflib 并发现它可以满足我的要求。但是,
我正在做一个项目,它从我存储在 2 个文本文件(nyt.text 和 wapo.text)中的报纸网站获取标题并比较它们相互比较,如果字符串被 Python 内置的 SequenceMatcher 确
我正在使用 difflib 来识别较长序列中短字符串的所有匹配项。然而,当有多个匹配项时,difflib 似乎只返回一个: > sm = difflib.SequenceMatcher(None, a
我一直在尝试使用 SequenceMatcher 创建嵌套或递归效果。 最终目标是比较两个序列,它们都可能包含不同类型的实例。 例如,序列可以是: l1 = [1, "Foo", "Bar", 3]
我对 SequenceMatcher 返回的两个不同答案感到有点困惑取决于参数的顺序。为什么会这样? 例子 SequenceMatcher 不可交换: >>> from difflib import
在 python difflib 库中,SequenceMatcher 类的行为是否异常,或者我误读了假定的行为是什么? 为什么 isjunk 参数在这种情况下似乎没有任何区别? difflib.Se
我在试用 python 的 difflib 模块时遇到了 SequenceMatcher。因此,我尝试了以下示例,但无法理解发生了什么。 >>> SequenceMatcher(None,"abc",
我正在尝试使用 SequenceMatcher.ratio()获取两个字符串的相似度:"86418648"和 "86488648" : >>> SequenceMatcher(None,"864186
我正在使用 difflib 比较两个目录中的文件(连续年份的版本)。首先,我使用 filecmp 查找已更改的文件,然后迭代使用 difflib.SequenceMatcher 比较它们并生成 htm
我试图弄清楚是否有一种方法可以根据 difflib SequenceMatcher 比例对 Pandas 中的字符串进行模糊合并。基本上,我有两个数据框,如下所示: df_a company a
我想使用 difflib.SequenceMatcher 从两个字符串中提取最长的公共(public)子字符串。我不确定我是发现了错误还是误解了 find_longest_match 的文档。这是我感
我正在尝试使用 Difflib.SequenceMatcher 来计算两个文件之间的相似性。这两个文件几乎完全相同,只是一个文件包含一些额外的空格、空行而另一个则没有。我正在尝试使用 s=diffli
我是一名优秀的程序员,十分优秀!