如何基于映射表高效批量替换Pandas DataFrame各字段的编码值
批量替换解决方案
首先将df_values转换为按变量分组的映射字典,再批量应用到df的对应列即可,全程不需要手动指定每一列的替换规则,适配任意数量变量的场景:
import pandas as pd # 第一步:生成全局替换映射表,结构为 {变量名: {原编码: 替换后值}} replace_mapping = df_values.groupby('Variable')[['Code', 'Value']].apply( lambda x: x.set_index('Code')['Value'].to_dict() ).to_dict() # 第二步:批量替换所有列的值 for col in df.columns: # 仅对存在替换规则的列执行替换,无规则的列保留原值 if col in replace_mapping: df[col] = df[col].replace(replace_mapping[col])
如果你后续还需要把df的列名替换为df_labels里的业务含义名称,可以额外加一步:
# 列名替换映射表 col_name_mapping = dict(zip(df_labels['Variable'], df_labels['Label'])) df = df.rename(columns=col_name_mapping)
方案说明
- 无需手动维护每一列的替换逻辑,所有规则全部从
df_values表自动读取,哪怕有上百个变量也能一次性处理 - 无替换规则的列会保留原始值,不会产生异常修改
- 后续如果需要新增/修改替换规则,只需要调整
df_values表即可,无需修改核心逻辑
内容的提问来源于stack exchange,提问作者Dinesh
相关产品推荐
相关产品推荐

