You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将process.extract返回的名称与元组列表转换为DataFrame?

问题:将模糊匹配结果转换为指定格式的DataFrame

现有代码用于输出模糊匹配结果:

for name in ours_list:
    print(name, process.extract(name, snow_list, limit=5))

返回结果示例:

Remote Access Migration [('Remote Access Migration', 100), ('Migrate Application Access', 86), ('Migration of Z75', 86), ('Network Access', 86), ('Remote Control Access Hardening', 86)]

需要将上述结果转换为如下结构的DataFrame:

Name  |  Pick 1 | Pick 2 ....
Remote Access Migration  |  Remote Access Migration (100) | Migrate Application Access (86) ....

解决方案

你的思路完全正确,通过构建列表的列表再转换为DataFrame即可实现,具体步骤如下:

1. 准备依赖

确保已安装pandas和fuzzywuzzy(如果使用的是该库的process模块):

pip install pandas fuzzywuzzy python-Levenshtein

2. 收集并格式化数据

遍历每个名称,将原名称和格式化后的匹配结果组装成一行数据,存入总列表:

import pandas as pd
from fuzzywuzzy import process

# 初始化存储所有行数据的列表
data_rows = []

for name in ours_list:
    # 获取前5个匹配结果
    matches = process.extract(name, snow_list, limit=5)
    # 将每个元组格式化为"名称 (相似度分数)"的字符串
    formatted_matches = [f"{match_name} ({score})" for match_name, score in matches]
    # 组装当前行:原名称 + 格式化后的匹配项
    current_row = [name] + formatted_matches
    # 添加到总数据列表
    data_rows.append(current_row)

3. 转换为DataFrame

定义列名,将列表转换为DataFrame:

# 生成列名:Name + Pick 1至Pick 5
columns = ["Name"] + [f"Pick {i+1}" for i in range(5)]
# 转换为DataFrame
result_df = pd.DataFrame(data_rows, columns=columns)

# 查看结果
print(result_df)

运行后即可得到符合需求的DataFrame,每一行对应原名称及其前5个格式化后的匹配结果。


内容的提问来源于stack exchange,提问作者RCarmody

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 14:50:26