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

如何利用嵌套字典替换Pandas DataFrame中的值

解决DataFrame列与嵌套字典匹配并映射的问题

我来帮你搞定这个需求!咱们先从示例数据入手,这样能更清晰地展示操作逻辑~

示例数据准备

首先定义一个示例DataFrame和对应的嵌套映射字典:

import pandas as pd

# 示例DataFrame
df = pd.DataFrame({
    'fruit': ['apple', 'banana', 'orange'],
    'color': ['red', 'yellow', 'orange'],
    'taste': ['sweet', 'sweet', 'sour']  # 这个列不在映射字典里,用来测试兼容情况
})

# 嵌套映射字典:外层键对应DataFrame的列名,内层键值对是要映射的规则
mapping_dict = {
    'fruit': {
        'apple': '甜脆苹果',
        'banana': '软糯香蕉',
        'orange': '酸甜橙子'
    },
    'color': {
        'red': '正红色',
        'yellow': '明黄色',
        'orange': '橙橘色'
    }
}

核心实现方法

我们需要让DataFrame的列名和字典的外层键匹配,匹配成功后用内层的键值对替换列中的行数据。最简洁高效的方式是用pandas的apply结合map方法:

# 遍历每一列,根据列名匹配嵌套字典的外层键,完成映射
result_df = df.apply(lambda col: col.map(mapping_dict.get(col.name, {})).fillna(col))

print(result_df)

运行后得到的结果:

fruitcolortaste
甜脆苹果正红色sweet
软糯香蕉明黄色sweet
酸甜橙子橙橘色sour

代码解释

  • col.name:获取当前处理的列名,用来匹配嵌套字典的外层键
  • mapping_dict.get(col.name, {}):如果列名存在于字典外层键中,就取出对应的内层映射字典;如果不存在,返回空字典(避免报错)
  • .fillna(col):如果列中的某个值不在内层字典的键里,就保留原数值(防止变成NaN)

进阶优化:只处理匹配的列

如果你的DataFrame有很多列,只想处理和字典外层键匹配的列,可以先筛选出目标列再操作,这样更高效:

# 筛选出与字典外层键匹配的列
target_cols = [col for col in df.columns if col in mapping_dict]

# 仅对这些列执行映射
df[target_cols] = df[target_cols].apply(lambda col: col.map(mapping_dict[col.name]))

这样就完成了精准的列匹配与数据映射啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 08:04:34