gpt4 book ai didi

python - 如何根据相似度函数合并两个 pandas DataFrame?

转载 作者:太空宇宙 更新时间:2023-11-03 10:59:40 30 4
gpt4 key购买 nike

给定数据集 1

name,x,y
st. peter,1,2
big university portland,3,4

和数据集 2

name,x,y
saint peter3,4
uni portland,5,6

目标是在

上合并
d1.merge(d2, on="name", how="left")

虽然名称没有完全匹配。所以我想做一种模糊匹配。在这种情况下,技术并不重要,更重要的是如何将它有效地整合到 pandas 中。

例如,st。 peter 可能与另一个中的 saint peter 匹配,但是 big university portland 可能偏差太大,我们不会将其与 uni 匹配波特兰

一种思考方式是允许以最小的 Levenshtein 距离加入,但前提是它低于 5 次编辑(st. --> saint 是 4)。

生成的数据框应该只包含 st 行。 peter,同时包含“名称”变体,以及 xy 变量。

有没有办法使用 pandas 进行这种合并?

最佳答案

你看过fuzzywuzzy了吗? ?

你可以这样做:

import pandas as pd
import fuzzywuzzy.process as fwp

choices = list(df2.name)

def fmatch(row):
minscore=95 #or whatever score works for you
choice,score = fwp.extractOne(row.name,choices)
return choice if score > minscore else None

df1['df2_name'] = df1.apply(fmatch,axis=1)
merged = pd.merge(df1,
df2,
left_on='df2_name',
right_on='name',
suffixes=['_df1','_df2'],
how = 'outer') # assuming you want to keep unmatched records

Caveat Emptor:我还没有尝试运行它。

关于python - 如何根据相似度函数合并两个 pandas DataFrame?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35380933/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com