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

如何通过字典映射函数将DataFrame语言列转换为指定缩写?

问题:DataFrame列值替换函数未生效,如何通过字典调用函数实现替换?

我尝试用列名映射函数的字典,将DataFrame里的“English”替换为缩写“ENG”,但编写的lang函数没生效,相关代码如下:

import pandas as pd
 
data = [["john","","","English","","","","","","","","",""]]
df = pd.DataFrame(data,columns=['firstName', 'lastName', 'state', 'Communication_Language__c', 'country', 'company', 'email', 'industry', 'System_Type__c', 'AccountType', 'customerSegment', 'Existing_Customer__c', 'GDPR_Email_Permission__c'])
filename = 'Template'
 
lang_trans = {"English":"ENG", "French":"FR"}

def lang(lang_trans, df):
    df.replace(lang_trans, inplace=True)
    df.str.upper()
    return df

# 这里原代码语法错误,缺少等号
parsing_map{
"Communication_Language__c": lang}

期望输出:

data = [["john","","","ENG","","","","","","","","",""]]
df = pd.DataFrame(data,columns=['firstName', 'lastName', 'state', 'Communication_Language__c', ...])

问题分析与修正方案

  1. 函数逻辑问题:

    • 原函数接收整个DataFrame,df.str.upper()会因非字符串列报错,且未赋值导致无实际效果;同时不需要对全表操作,只需处理目标列。
    • 修正后函数接收要处理的列(Series对象),直接对列执行替换。
  2. 字典定义语法错误:

    • 原代码parsing_map{...}缺少等号,正确写法是parsing_map = {...}。
  3. 函数调用逻辑:

    • 需要遍历字典,针对每个列名调用对应函数,传入翻译字典和该列数据。

完整可运行代码

import pandas as pd
 
data = [["john","","","English","","","","","","","","",""]]
df = pd.DataFrame(data,columns=['firstName', 'lastName', 'state', 'Communication_Language__c', 'country', 'company', 'email', 'industry', 'System_Type__c', 'AccountType', 'customerSegment', 'Existing_Customer__c', 'GDPR_Email_Permission__c'])
filename = 'Template'
 
lang_trans = {"English":"ENG", "French":"FR"}

def lang(lang_trans, df_col):
    # 对目标列执行替换,inplace=True直接修改原列
    df_col.replace(lang_trans, inplace=True)
    # 如果需要确保值为大写,可添加此行(可选)
    # df_col = df_col.str.upper()
    return df_col

# 修正字典定义语法
parsing_map = {
    "Communication_Language__c": lang
}

# 遍历字典,自动处理对应列
for col_name, func in parsing_map.items():
    df[col_name] = func(lang_trans, df[col_name])

# 验证结果
print(df['Communication_Language__c'].values)
# 输出:['ENG']

补充说明

  • 函数lang现在专门处理单个列,避免了全表操作的错误。
  • 后续若需添加其他列的处理逻辑,只需在parsing_map中新增列名与对应函数的键值对即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 07:30:55