You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 09:09:23