如何在Python中将DataFrame转为以A+B为键的自定义字典?
Python实现CSV生成A+B为键、C/D/E为值的字典
可以用Python内置的csv模块快速实现需求,核心思路是按表头读取每行数据,拼接A、B列作为键,将C、D、E列作为值存入字典。以下是两种常见实现方式:
基础实现(键唯一,后行覆盖前行)
如果你的A+B组合不会重复,或者允许重复键时后行数据覆盖前行,用下面的代码:
import csv # 初始化结果字典 result_dict = {} # 打开目标CSV文件(替换成你的文件名) with open('your_file.csv', 'r', encoding='utf-8') as f: # 用DictReader按表头读取,直接通过列名获取值 reader = csv.DictReader(f) for row in reader: # 拼接A和B作为键(如果是数值类型,需转成字符串:str(row['A']) + str(row['B'])) key = row['A'] + row['B'] # 可选:将C/D/E存为列表或字典 # 方式1:列表形式 result_dict[key] = [row['C'], row['D'], row['E']] # 方式2:保留表头的字典形式 # result_dict[key] = {'C': row['C'], 'D': row['D'], 'E': row['E']} # 查看结果 print(result_dict)
处理重复键(保留所有对应值)
如果A+B组合可能重复,且需要保留所有对应的数据,可将值设为列表的列表:
import csv result_dict = {} with open('your_file.csv', 'r', encoding='utf-8') as f: reader = csv.DictReader(f) for row in reader: key = row['A'] + row['B'] current_value = [row['C'], row['D'], row['E']] # 键已存在则追加,不存在则初始化列表 if key in result_dict: result_dict[key].append(current_value) else: result_dict[key] = [current_value]
注意事项
- 如果A或B列是数值类型(如整数、浮点数),拼接前要先转成字符串,避免类型错误。
- 确保CSV文件的表头确实是"A","B","C","D","E",大小写要一致,否则会找不到对应列。
内容的提问来源于stack exchange,提问作者PythonDDevF
相关产品推荐
相关产品推荐

