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

如何基于多键字典动态替换Pandas DataFrame列值?

解决方案

下面是满足需求的具体实现步骤,通过动态映射关联列与替换规则,避免直接硬编码列名:

1. 准备基础数据与映射规则

先构造示例DataFrame,同时定义列名映射关系和多键替换规则:

import pandas as pd

# 示例DataFrame
df = pd.DataFrame({
    'letters': ['Alphabet', 'XYZ', 'Alphabet'],
    'State': ['Indiana', 'California', 'Texas'],
    'Other': ['test', 'data', 'sample']
})

# 列名映射:指定需要处理的列,以及对应的替换规则键
df_map = {
    'letters': 'alpha_replace',
    'State': 'state_replace'
}

# 多键替换字典:每个键对应一组专属替换规则
replace_dict = {
    'alpha_replace': {'Alphabet': 'ABC'},
    'state_replace': {'Indiana': 'IN'}
}

2. 编写通用替换函数

这个函数负责接收DataFrame、目标列名和替换规则,完成精准替换:

def replace_values(df, col_name, replace_rules):
    # 遍历替换规则,定位目标行完成替换
    for old_val, new_val in replace_rules.items():
        df.loc[df[col_name] == old_val, col_name] = new_val
    return df

3. 循环调用函数完成批量替换

通过遍历df_map的键值对,为每一列匹配对应的替换规则:

# 循环处理所有需要替换的列
for col, rule_key in df_map.items():
    df = replace_values(df, col, replace_dict[rule_key])

# 查看最终结果
print(df)

运行后输出结果:

letters       State    Other
0     ABC          IN     test
1     XYZ  California     data
2     ABC        Texas   sample

额外说明

  • 这种方式通过df_map实现列与规则的动态绑定,后续新增替换需求时,只需在replace_dict中添加新规则组,并在df_map中关联对应列即可,扩展性极强
  • 使用df.loc精准定位替换行,避免了.replace方法可能带来的全局替换风险(如果有特殊匹配需求时更灵活)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 01:15:45