You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Pandas中基于层级ID生成对应层级名称列?

解决方法

1. 构建ID-名称映射字典

从现有数据中提取所有层级ID与对应Name的唯一映射关系(每个ID对应的名称是固定的,不受所在层级影响):

# 筛选所有带"Level"和"ID"的列
id_cols = [col for col in df.columns if 'Level' in col and 'ID' in col]

# 拼接各层级ID与Name的配对数据
mapping_dfs = []
for col in id_cols:
    temp = df[[col, 'Name']].rename(columns={col: 'ID'})
    mapping_dfs.append(temp)

# 合并后去重,转成字典用于快速映射
id_name_map = pd.concat(mapping_dfs).drop_duplicates(subset='ID').set_index('ID')['Name'].to_dict()

2. 替换层级ID为对应名称

遍历每个ID列,用映射字典替换值,同时修改列名为对应Name格式,不需要原ID列可直接删除:

for col in id_cols:
    # 生成新列名并替换值
    new_col = col.replace('ID', 'Name')
    df[new_col] = df[col].map(id_name_map)
    # 可选:删除原ID列
    df.drop(col, axis=1, inplace=True)

特殊情况处理

  • 若存在无对应Name的ID(比如Path中的ID未出现在层级列中),可给空值填充默认值:
df[new_col] = df[col].map(id_name_map).fillna('未匹配到名称')
  • 注意ID类型与映射字典键的一致性:查看df.info()确认ID列类型,若为字符串则确保字典键也是字符串,可通过df[col].astype(str)转换后再映射。

内容的提问来源于stack exchange,提问作者emil

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 07:40:30