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

如何从Pandas DataFrame构建动态字典并重命名键

解决方案

嘿,我来帮你搞定这个需求!其实用Pandas的内置方法就能轻松实现,步骤很清晰,我给你一步步演示:

步骤1:导入依赖并构造示例DataFrame

首先确保你已经导入了pandas,然后我先构造一个和你描述结构匹配的示例DataFrame,方便你对照测试:

import pandas as pd

# 构造和你需求匹配的示例数据
df = pd.DataFrame({
    "AwardAmount": [10000, 25000, 15000],
    "AwardNumber": ["AN-001", "AN-002", "AN-003"],
    "College": ["Engineering", "Arts", "Science"],
    "Department": ["Computer Science", "Literature", "Physics"],
    "Name": ["Alice", "Bob", "Charlie"]
})

步骤2:定义列名映射字典

把你需要重命名的原列名和目标字典键名对应起来,这样后续转换时会自动替换:

# 原列名: 目标字典键名,按需添加或修改
column_mapping = {
    "AwardNumber": "noticeNumber",
    "AwardAmount": "awardAmount",
    "College": "college",
    "Department": "department"
}

步骤3:生成字典列表(最常用场景)

如果你的需求是把DataFrame的每一行都转换成一个独立的字典,最终得到一个字典列表,直接用rename+to_dict('records')就能搞定:

# 先重命名列,再转换为字典列表
result_dict_list = df.rename(columns=column_mapping).to_dict('records')

运行后result_dict_list的输出会是:

[
    {'noticeNumber': 'AN-001', 'awardAmount': 10000, 'college': 'Engineering', 'department': 'Computer Science', 'Name': 'Alice'},
    {'noticeNumber': 'AN-002', 'awardAmount': 25000, 'college': 'Arts', 'department': 'Literature', 'Name': 'Bob'},
    {'noticeNumber': 'AN-003', 'awardAmount': 15000, 'college': 'Science', 'department': 'Physics', 'Name': 'Charlie'}
]

步骤4:提取特定列生成字典

如果不需要保留DataFrame的所有列,先筛选出你需要的列再转换:

# 指定需要保留的原列名
selected_columns = ["AwardNumber", "College", "AwardAmount"]
# 筛选列 → 重命名 → 转字典列表
filtered_result = df[selected_columns].rename(columns=column_mapping).to_dict('records')

这样得到的字典就只包含你指定的字段啦。

步骤5:构建以唯一键为索引的单字典

要是你需要把noticeNumber作为顶层键,对应整行的信息,可以用set_index来实现:

# 重命名列 → 设置noticeNumber为索引 → 转换为嵌套字典
single_nested_dict = df.rename(columns=column_mapping).set_index('noticeNumber').to_dict('index')

输出结果会是:

{
    'AN-001': {'awardAmount': 10000, 'college': 'Engineering', 'department': 'Computer Science', 'Name': 'Alice'},
    'AN-002': {'awardAmount': 25000, 'college': 'Arts', 'department': 'Literature', 'Name': 'Bob'},
    'AN-003': {'awardAmount': 15000, 'college': 'Science', 'department': 'Physics', 'Name': 'Charlie'}
}

这些方法都是动态的,不管你的DataFrame有多少行,都能自动适配,完全不用手动循环处理~

内容的提问来源于stack exchange,提问作者ds920

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 03:33:33