我有两个数据帧,我想根据一个列合并它们。但是,由于拼写交替、空格数不同、缺少/存在变音符号,我希望能够合并,只要它们彼此相似。
任何相似性算法都可以(soundex、Levenshtein、difflib)。
假设一个数据帧包含以下数据:
df1 = DataFrame([[1],[2],[3],[4],[5]], index=['one','two','three','four','five'], columns=['number'])
number
one 1
two 2
three 3
four 4
five 5
df2 = DataFrame([['a'],['b'],['c'],['d'],['e']], index=['one','too','three','fours','five'], columns=['letter'])
letter
one a
too b
three c
fours d
five e
然后我想得到最终的数据帧
number letter
one 1 a
two 2 b
three 3 c
four 4 d
five 5 e
我已经编写了一个Python包来解决这个问题:
pip install fuzzymatcher
您可以找到回购here和文档here。
基本用法:
给定要模糊连接的两个数据帧
df_left
和df_right
,可以编写以下内容:或者如果您只想链接到最接近的匹配项:
我会使用Jaro Winkler,因为它是目前可用的最高效、最精确的近似字符串匹配算法之一[Cohen, et al.],[Winkler]。
这就是我如何处理来自jellyfish包的Jaro Winkler:
输出:
类似于@locojay suggestion,您可以将^{} 的^{} 应用于} :
df2
的索引,然后应用^{是的。
如果这些是列,您可以按照相同的方式应用于列,然后^{} :
相关问题 更多 >
编程相关推荐