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

如何在Pandas中用另一DataFrame的标准名称替换目标DataFrame的ID值

实现DataFrame中ID到标准名称的批量替换

核心思路

先把映射表转换成ID-标准名称的字典,再利用Pandas的replace()方法对目标DataFrame的所有列批量完成替换,无需逐列处理。

步骤1:构建匹配的映射字典

目标DataFrame里的ID是浮点数类型(如1000002.0),而映射表中的ID是整数,所以需要把字典的键转为浮点数,确保类型匹配:

# 从映射表生成字典,并转换键的类型为float
id_mapping = df_IDs.set_index('Criteria ID')['Canonical Name'].to_dict()
id_mapping = {float(k): v for k, v in id_mapping.items()}

步骤2:批量替换所有列

直接调用replace()方法传入映射字典,会自动遍历所有列完成替换,未在映射表中的ID会保留原值:

# 执行替换,生成新的DataFrame
df_replaced = df.replace(id_mapping)

替换结果示例

替换后的df_replaced内容如下:

LopCityCriteriaIdLopCountryCriteriaIdLopMostSpecificTargetIdLopRegionCriteriaId
01007788.02356.01007788.020462.0
1Kabul,Kabul,AfghanistanLuanda,Luanda Province,AngolaLuanda,Luanda Province,AngolaWillemstad,Curacao
2Luanda,Luanda Province,AngolaKabul,Kabul,Afghanistan9062093.0Luanda,Luanda Province,Angola
3Luanda,Luanda Province,AngolaWillemstad,CuracaoKabul,Kabul,AfghanistanPhilipsburg,Sint Maarten
4The Valley,AnguillaThe Valley,AnguillaKabul,Kabul,AfghanistanThe Valley,Anguilla

额外说明

如果需要对未匹配的ID统一处理(比如替换为"未找到匹配名称"),可以修改替换逻辑:

# 先替换匹配项,再把剩余的数值类型转为指定文本
df_replaced = df.replace(id_mapping)
for col in df_replaced.columns:
    df_replaced[col] = df_replaced[col].apply(lambda x: x if isinstance(x, str) else "未找到匹配名称")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 04:20:27