pandas - 熊猫 - 模糊匹配 - 进行模糊匹配时加速循环?
问题描述
我基本上是在尝试使用近似匹配加入 2 个数据帧。下面列出了我一般如何执行此操作:
- 有要匹配的字符串列表
- 使用模糊的 process.extract 定义一个函数
- 将此函数应用于第一个数据帧中的所有行以获得匹配
- 根据匹配键将第一个 DF 与第二个 DF 连接起来。
这是我的代码:
def closest_match(x):
matched = (process.extract(x, matchlist[matchlist.match_name.str.startswith(x[:3])].match_name, limit=1, scorer=fuzz.token_sort_ratio))
if matched:
print(matched[0])
return matched[0][0]
else:
return None
df1['key'] = df1.df1_name.apply(lambda x: closest_match(x))
# merge with 2nd df
joined = df1.merge(df2, left_on='key', right_on='df2_name')
这里的问题是关于速度。对于 10000 次迭代的循环,此代码需要很长时间。我需要这个来进行 100K 比赛。如何加快这段代码的速度?
解决方案
推荐阅读
- python - 如何使用 Selenium 单击打开的应用程序警报
- swift - 无法理解为什么将常数 x 与 switch 案例中 where 子句中的负常数 y 进行比较
- javascript - 角度模式表单 - 如果整数字段不为空,则需要字段
- java - 是否有以下Java程序的解决方案删除链表中的重复项以首次出现
- python - 尝试为矩阵赋值时出错,显示尺寸问题
- c# - No variables show up on inspector, first person controller
- c++ - Why doesn't C++20 use `requires` to restrict the T for atomic
? - python - Why does my Python freeze when I do an overflow calculation?
- regex - How do I improve my code to get integer values from regex named capture groups?
- firebase - Firebase Cloud Firebase: How to move data between projects in Native mode