如何将Python嵌套for循环的输出转为Pandas DataFrame?
把嵌套循环的模糊匹配结果转换成Pandas DataFrame
这里有个简单直接的方法来实现你想要的效果——先收集循环里的所有匹配数据,再用Pandas把它转换成结构化的DataFrame:
步骤思路:
- 先创建一个空列表,用来存储每一组
col1元素、col2元素和对应的模糊匹配得分 - 在嵌套循环里,把每一组数据以字典(或元组)的形式追加到列表中
- 最后用
pd.DataFrame()把列表转换成规范的DataFrame
完整代码示例:
import pandas as pd from fuzzywuzzy import fuzz # 构造你提供的原始DataFrame data = { 'col1': ['Country', 'State', 'City', 'park', 'site'], 'col2': ['County', 'stats', 'PARK', 'parking', 'Cite'] } df = pd.DataFrame(data) # 初始化空列表存储匹配结果 match_results = [] # 嵌套循环收集数据 for i in df.col1: for j in df.col2: similarity_score = fuzz.token_set_ratio(i, j) # 用字典存储每组数据,后续生成DataFrame时会自动对应列名 match_results.append({ 'col1_value': i, 'col2_value': j, 'similarity_score': similarity_score }) # 转换成目标DataFrame result_df = pd.DataFrame(match_results) # 查看最终结果 print(result_df)
输出示例:
运行后会得到这样的结构化结果:
col1_value col2_value similarity_score 0 Country County 83 1 Country stats 22 2 Country PARK 20 3 Country parking 29 4 Country Cite 25 5 State County 44 ...(剩余行省略)
如果你觉得字典写法有点繁琐,也可以用元组存储数据(比如(i, j, similarity_score)),然后在创建DataFrame时手动指定列名:pd.DataFrame(match_results, columns=['col1_value', 'col2_value', 'similarity_score']),效果完全一致。
内容的提问来源于stack exchange,提问作者kalyan
相关产品推荐
相关产品推荐

