python - 如何使用模糊逻辑从 Pandas 数据框中匹配和提取文本?

标签 python pandas

我有两个数据框如下: DF1:

Name                     Value
buying fish hook         240
arrange lunch            75
repair equipment         800
purchase air condition   1400
buying fish              66

DF 2:

Name
fish
lunch
equipemt
air condition
hair condition
fish hook

我想用模糊逻辑匹配两个数据框中名称列中的名称,并将第二个数据框中的名称列添加到第一个数据框中:

Name                     Value    item
buying fish hook         240      fish hook
arrange lunch            75       lunch
repair equipment         800      equipment
purchase air condition   1400     air condition

并非所有名称都完全匹配。 Df 2 有几个名字,有些有匹配词,例如:air condition 和 hair condition。从 DF 1 拆分值会导致未匹配,其中鱼钩仅与鱼匹配

最佳答案

您可以使用 pd.Series.apply使用 next 和一个生成器表达式。在多个匹配的情况下,此方法将按 df2 中的行顺序给予优先级。如果未找到匹配项,find_key 将返回 None

def find_key(x):
    return next((i for i in df2['Name'].values if x in i), None)

df1['item'] = df1['Name'].apply(find_key)

关于python - 如何使用模糊逻辑从 Pandas 数据框中匹配和提取文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51187962/

相关文章:

python - Pandas:使用合并单元格读取 Excel

python - 如何使用解密 key 加密和解密 Pandas 数据帧?

python - 从 pandas datetime 列中提取年份作为数值,空单元格使用 NaN 而不是 NaT

python - 将 PANDAS 与 Apache Beam 结合使用

python - 模块 'importlib' 没有属性 'util'

python - Sklearn AffinityPropagation 内存错误

python - 使用前 8 个字符重命名目录中的文件并保留文件扩展名 (Python)

python - 我如何在 sqlalchemy ORM 中表达这个查询?

python - InvalidDocument : Cannot encode object: <pymongo. 游标。游标对象位于

python - 按 MultiIndex 级别或子级别切片 pandas DataFrame