如何将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
相关产品推荐
相关产品推荐

