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

如何通过自定义函数用字典值替换DataFrame指定列内容

Pandas多列自定义替换函数修复方案

需求明确:借助replace_dict中的映射关系,替换DataFrame里lang和state列的对应值(例如English→ENG、Alabama→AL),但现有自定义replace函数仅能处理state列,无法同时处理lang列,需修正逻辑让函数能基于传入的colname参数完成对应列的替换。

错误原因分析

你之前尝试的replace函数存在两个核心问题:

  1. 循环遍历replace_dict的键值对时,将循环变量命名为colname,直接覆盖了传入的列名参数,等于白白传入了目标列信息
  2. 循环内执行一次替换后立刻return,导致只会处理replace_dict里的第一个列(也就是state),完全没机会处理lang列

修正后的完整代码

让函数利用传入的colname参数,从replace_dict中取出对应列的映射规则,针对性完成替换即可:

import pandas as pd

d=[['English','Alabama','bob','smith']]
df=pd.DataFrame(d,columns=["lang",'state','first','last'])
filename='temp'

error_dict={}
error_dict[filename]={}

replace_dict={"state":{"Alabama": "AL", "Alaska": "AK"},"lang":{"English":"ENG", "French":"FR"}}
    
def replace(df, error_dict, colname):
    # 根据传入的列名获取对应替换规则,执行替换
    if colname in replace_dict:
        df[colname] = df[colname].replace(replace_dict[colname])
    return df, error_dict

parsing_map={
    "lang": [replace],
    "state":[replace]
    }

for i in parsing_map.keys():
    for j in parsing_map[i]:
        df, error_dict = j(df, error_dict, i)

# 查看最终结果
print(df)

运行结果

执行后得到的DataFrame与预期一致:

lang state first  last
0  ENG    AL   bob  smith

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 12:25:19