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

如何根据字典列表匹配ID替换Pandas列中的值

匹配IDCUST替换NAMECITY.1列值的解决方案

输入数据

字典列表

dict_list = [
    {'idcust': '123', 'LOC_NAME_STATE': 'BRUNSWICK_WA'},
    {'idcust': '124', 'LOC_NAME_STATE': 'CANNING VALE_WA'}
]

原始Pandas DataFrame

import pandas as pd

df = pd.DataFrame({
    'IDCUST': ['123', '124', '125'],
    'NAMECITY.1': ['RICHMOND', 'MACLEAY ISLAND', 'VICTORIA POINT']
})

实现方法

方法1:映射字典+map替换

先把字典列表转成{idcust: 对应替换值}的映射关系,再用map匹配替换,匹配不到的用fillna保留原值:

# 构建映射字典
mapping = {item['idcust']: item['LOC_NAME_STATE'] for item in dict_list}

# 执行替换
df['NAMECITY.1'] = df['IDCUST'].map(mapping).fillna(df['NAMECITY.1'])

替换后结果:

IDCUST        NAMECITY.1
0    123      BRUNSWICK_WA
1    124  CANNING VALE_WA
2    125   VICTORIA POINT

方法2:直接用replace替换

replace方法支持按列映射替换,写法更简洁:

df['NAMECITY.1'] = df['IDCUST'].replace(mapping)

效果和方法1完全一致,未匹配的行会自动保留原有值。

方法3:合并DataFrame更新

如果需要处理更复杂的字段关联,可以先把字典列表转成临时DataFrame,再通过合并来更新:

# 字典列表转临时DataFrame
dict_df = pd.DataFrame(dict_list)

# 左连接原DataFrame和临时DataFrame
merged_df = df.merge(dict_df, left_on='IDCUST', right_on='idcust', how='left')

# 替换NAMECITY.1列,填充未匹配的原值
merged_df['NAMECITY.1'] = merged_df['LOC_NAME_STATE'].fillna(merged_df['NAMECITY.1'])

# 删除多余的中间列
merged_df = merged_df.drop(['idcust', 'LOC_NAME_STATE'], axis=1)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 16:03:36