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

如何编写函数从字典提取含capitalize的键并大写DataFrame对应列值

解决Pandas列首字母大写匹配字典规则的问题

我有一个字典parsing(值可能是列表或单个字符串)和一个Pandas DataFrame,需要编写函数实现:

  • 提取parsing中值(无论列表还是单个元素)包含"capitalize"的所有键
  • 将这些键与DataFrame的列名匹配,对匹配成功的列执行str.title()首字母大写操作

示例:识别firstName对应的规则含"capitalize",将列中"john"转为"John"。


原始数据与规则字典

import pandas as pd
 
data= [["john","","","","","","","","","","","",""]]
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'
 
parsing={
"firstName": ["req_cols","capitalize"],
"lastName": ["req_cols", "capitalize"],
"state":["valid", "states","capitalize"],
"Communication_Language__c": "lang",
"country": ["req_cols","valid","capitalize"],
"company":"req_cols",
"email":"req_cols",
"industry":["valid","capitalize"],
"SME_Vertical__c":"valid",
"System_Type__c":["valid","capitalize"],
"AccountType":["valid","capitalize"],
"customerSegment":"capitalize",
"Existing_Customer__c":"req_cols",
"GDPR_Email_Permission__c":"req_cols"
}

尝试的错误代码

def capitalize(parsing.keys(capitalize), df):
    df[capitalize] = str.title(df[capitalize])
return df

错误分析

  1. 函数参数定义语法错误:不能直接在参数位置写parsing.keys(capitalize),不符合Python函数定义规则
  2. 列处理方式错误:str.title()是字符串方法,无法直接作用于DataFrame列,需用df[col].str.title()
  3. 未正确筛选目标列:没有遍历parsing字典判断哪些键需要执行大写操作

正确实现代码

def apply_capitalize(parsing, df):
    # 筛选出符合规则且存在于DataFrame中的列
    cols_to_capitalize = [
        key for key, value in parsing.items()
        if (isinstance(value, list) and "capitalize" in value) 
        or (isinstance(value, str) and value == "capitalize")
        and key in df.columns
    ]
    
    # 对目标列执行首字母大写
    for col in cols_to_capitalize:
        df[col] = df[col].str.title()
    
    return df

# 调用函数处理DataFrame
df = apply_capitalize(parsing, df)

# 验证结果示例
print(df[['firstName', 'lastName', 'state']])

代码说明

  1. 筛选目标列:通过列表推导式遍历parsing,判断值为列表时是否包含"capitalize",值为字符串时是否等于"capitalize",同时确保列名存在于DataFrame中
  2. 执行大写操作:遍历筛选出的列,调用str.title()实现首字母大写
  3. 返回结果:返回处理后的DataFrame

内容的提问来源于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 19:15:35