如何编写def函数通过字典映射替换DataFrame列值且不直接引用列名?
基于映射字典实现DataFrame列值批量替换
实现思路
遍历parsing_map字典中的键值对,自动获取目标列名和对应的替换规则,无需硬编码列名,实现通用的列值替换逻辑。
完整代码实现
import pandas as pd def map_column_values(df, parsing_map): # 复制原DataFrame,避免修改原始数据 processed_df = df.copy() # 遍历映射规则,处理每一列 for col, replace_rules in parsing_map.items(): processed_df[col] = processed_df[col].replace(replace_rules) return processed_df # 测试代码 if __name__ == "__main__": data = [["English"], ["French"], ["Spanish"]] df = pd.DataFrame(data, columns=['Communication_Language__c']) lang = {"English": "ENG", "French": "FR"} parsing_map = {"Communication_Language__c": lang} # 调用函数处理数据 result_df = map_column_values(df, parsing_map) print(result_df)
代码说明
- 函数
map_column_values接收两个核心参数:待处理的df和定义替换规则的parsing_map - 先复制原DataFrame,保证原始数据不受修改(若需要原地修改,可改为
processed_df[col].replace(replace_rules, inplace=True)并去掉返回值) - 遍历
parsing_map时,col自动对应目标列名(比如Communication_Language__c),replace_rules对应该列的替换字典(比如lang) - pandas的
replace方法会自动匹配列中与字典键一致的值,替换为对应的值,未匹配的值保持原样
运行输出
Communication_Language__c 0 ENG 1 FR 2 Spanish
内容的提问来源于stack exchange,提问作者user19788086
相关产品推荐
相关产品推荐

