如何编写函数从字典提取含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
错误分析
- 函数参数定义语法错误:不能直接在参数位置写
parsing.keys(capitalize),不符合Python函数定义规则 - 列处理方式错误:
str.title()是字符串方法,无法直接作用于DataFrame列,需用df[col].str.title() - 未正确筛选目标列:没有遍历
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']])
代码说明
- 筛选目标列:通过列表推导式遍历
parsing,判断值为列表时是否包含"capitalize",值为字符串时是否等于"capitalize",同时确保列名存在于DataFrame中 - 执行大写操作:遍历筛选出的列,调用
str.title()实现首字母大写 - 返回结果:返回处理后的DataFrame
内容的提问来源于stack exchange,提问作者user20235106
相关产品推荐
相关产品推荐

