如何遍历列表中子列表生成所有元素对并导出CSV?
解决方案
问题分析
你当前的核心问题是没有先将每个逗号分隔的字符串拆分为独立元素的列表,直接对原字符串列表使用combinations自然无法得到正确的元素对。需要先完成字符串拆分,再对每个子列表生成两两组合。
完整代码实现
import pandas as pd from itertools import combinations # 读取数据 df = pd.read_csv("pairings.csv") sample_list = df['fruit'].tolist() # 存储所有生成的元素对 all_pairs = [] # 遍历每个子字符串 for item in sample_list: # 拆分字符串为单个元素,同时去除每个元素前后的空格 fruit_items = [fruit.strip() for fruit in item.split(',')] # 生成当前子列表的所有两两无序组合 pairs = combinations(fruit_items, 2) # 将组合添加到总列表 all_pairs.extend(pairs) # 转换为DataFrame并设置列名 result_df = pd.DataFrame(all_pairs, columns=['0', '1']) # 保存为CSV文件 result_df.to_csv("fruit_pairs.csv", index=True)
代码说明
- 字符串拆分:用
split(',')拆分每个逗号分隔的字符串,再通过strip()去除元素前后的空格(比如处理"Apple, Orange"变成["Apple", "Orange"])。 - 生成两两组合:使用
itertools.combinations(列表, 2)可以直接生成列表中所有不重复的无序元素对,避免手动嵌套循环的冗余。 - 结果保存:将所有组合转为DataFrame,设置列名后保存为CSV,
index=True会保留行号,和你需要的格式一致。
输出示例
生成的CSV内容会和你预期的格式一致:
,0,1 0,Apple,Orange 1,Pear,Apple 2,Pear,Grape 3,Apple,Grape 4,Plum,Orange 5,Plum,Pear ...
内容的提问来源于stack exchange,提问作者user472543984
相关产品推荐
相关产品推荐

