CSV文件数据重排:按水果聚合用户名单问题求助
解决CSV按水果分组整合用户名单的问题
基础实现(用Python内置csv模块)
不用第三方库的话,用内置csv模块就能搞定核心逻辑,关键是正确按水果键累加用户名单,避免覆盖或错误合并:
import csv # 初始化分组字典:键为水果名,值为对应用户列表 fruit_users = {} # 读取原CSV文件 with open('input.csv', 'r', newline='', encoding='utf-8') as infile: reader = csv.DictReader(infile) for row in reader: fruit = row['Fruit'].strip() name = row['Name'].strip() # 水果不在字典里就创建空列表,存在则直接追加用户 if fruit not in fruit_users: fruit_users[fruit] = [] fruit_users[fruit].append(name) # 写入新CSV文件 with open('output.csv', 'w', newline='', encoding='utf-8') as outfile: writer = csv.writer(outfile) # 写入表头 writer.writerow(['Fruit', 'Names']) # 遍历分组字典,将用户列表用分号加空格拼接 for fruit, names in fruit_users.items(): writer.writerow([fruit, '; '.join(names)])
更简洁的实现(用pandas)
如果日常处理数据常用pandas,一行分组聚合就能完成,代码更简洁:
import pandas as pd # 读取原CSV df = pd.read_csv('input.csv') # 按Fruit分组,将Name列用'; '拼接 grouped_df = df.groupby('Fruit')['Name'].agg('; '.join).reset_index() # 重命名列名匹配需求 grouped_df.columns = ['Fruit', 'Names'] # 写入新CSV grouped_df.to_csv('output.csv', index=False)
你之前出错的可能原因
- 处理行数据时,没有判断水果是否已存在于字典中,直接用
fruit_users[fruit] = [name]覆盖了原有列表,而非用append追加 - 写入CSV时循环逻辑错误,没有遍历分组后的字典,而是重复写入了同一个全量用户列表
内容的提问来源于stack exchange,提问作者Gabriel Snikuer
相关产品推荐
相关产品推荐

