如何基于Lookup Table匹配AccountId与MappedField重命名Pandas列
基于Lookup Table按AccountId匹配重命名DataFrame列
核心实现思路
通过筛选Lookup Table中当前数据对应的AccountId规则,构建原始列名到目标列名的映射字典,再利用pandas的rename()方法完成列名替换。以下是针对单AccountId和多AccountId场景的具体实现:
样例数据准备
先构造符合需求的测试数据:
import pandas as pd # 原始业务数据 raw_df = pd.DataFrame({ 'AccountId': ['A001', 'A001', 'A002', 'A002'], 'CustName': ['张三', '李四', '王五', '赵六'], 'Amt': [100, 200, 300, 400], 'TransDate': ['2024-01-01', '2024-01-02', '2024-01-03', '2024-01-04'] }) # 列名映射规则表(Lookup Table) lookup_table = pd.DataFrame({ 'AccountId': ['A001', 'A001', 'A002', 'A002'], 'MappedField': ['CustName', 'Amt', 'CustName', 'Amt'], 'FieldName': ['客户姓名', '交易金额', '用户名称', '交易额度'] })
场景1:原始数据仅对应单个AccountId
如果原始数据中所有行属于同一个AccountId,直接筛选对应规则并构建映射:
# 获取当前数据的AccountId current_account = raw_df['AccountId'].iloc[0] # 筛选该AccountId对应的列名映射规则 account_rules = lookup_table[lookup_table['AccountId'] == current_account] # 构建原始列名→目标列名的映射字典 rename_mapping = dict(zip(account_rules['MappedField'], account_rules['FieldName'])) # 执行重命名(未匹配的列名保持不变) renamed_df = raw_df.rename(columns=rename_mapping) # 查看结果 print(renamed_df)
输出结果:
AccountId 客户姓名 交易金额 TransDate 0 A001 张三 100 2024-01-01 1 A001 李四 200 2024-01-02 2 A002 王五 300 2024-01-03 3 A002 赵六 400 2024-01-04
场景2:原始数据包含多个AccountId
如果数据中存在多个AccountId,需要按AccountId分组后分别应用对应规则:
def rename_group(group): # 获取当前分组的AccountId account_id = group['AccountId'].iloc[0] # 筛选对应规则 rules = lookup_table[lookup_table['AccountId'] == account_id] # 构建映射字典 mapping = dict(zip(rules['MappedField'], rules['FieldName'])) # 重命名当前分组的列 return group.rename(columns=mapping) # 按AccountId分组处理,再合并结果 final_df = raw_df.groupby('AccountId', group_keys=False).apply(rename_group) # 查看结果 print(final_df)
输出结果:
AccountId 用户名称 交易额度 TransDate 0 A001 张三 100 2024-01-01 1 A001 李四 200 2024-01-02 2 A002 王五 300 2024-01-03 3 A002 赵六 400 2024-01-04
注意事项
- 确保Lookup Table中
(AccountId, MappedField)组合唯一,避免重复映射导致规则冲突 - 原始数据中未出现在对应AccountId的
MappedField中的列,将保留原列名 - 若需要强制重命名所有列,需提前在Lookup Table中补充对应规则,或在代码中添加未匹配列的处理逻辑
内容的提问来源于stack exchange,提问作者Tim R
相关产品推荐
相关产品推荐

