如何用另一DataFrame的标签替换当前DataFrame行中的编码值
问题:将DataFrame中的编码替换为对应标签
现有两个DataFrame:df1存储编码数据,df2存储编码与其对应的标签映射关系,需将df1中的编码替换为df2中对应的标签。
示例数据
df1(编码数据)
VBC VDV 1 5 1 7 2 9 2 10
df2(编码-标签映射)
QCcode Response Label VBC 1 Male VBC 2 Female VDV 5 Advertising VDV 9 Marketing
期望输出
VBC VDV Male Advertising Male NaN Female Marketing Female NaN
解决方案
用Pandas的映射功能即可实现,步骤如下:
构建各列的编码-标签映射字典
按QCcode分组,将每个列对应的Response(编码)和Label(标签)整理为字典:import pandas as pd # 假设已加载df1和df2 mappings = df2.groupby('QCcode').apply(lambda x: dict(zip(x['Response'], x['Label']))).to_dict()对df1的每一列应用映射
遍历df1的列,用map()方法替换编码,无对应映射的编码会转为NaN;若需保留原编码,可追加fillna处理:df_op = df1.apply(lambda col: col.map(mappings.get(col.name, {}))) # 可选:将NaN替换为原编码 # df_op = df_op.fillna(df1)
内容的提问来源于stack exchange,提问作者Sai Deepak Chinta
相关产品推荐
相关产品推荐

