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

Pandas根据字典匹配列更新值 无匹配项时保留原有列值

实现方法

直接用map搭配fillna即可实现需求,代码如下:

df['Pack_Size'] = df['Product_ID'].map(pack_size_dict).fillna(df['Pack_Size'])

实现逻辑:

  • df['Product_ID'].map(pack_size_dict) 会优先匹配字典中存在的Product_ID,返回对应的Pack_Size值,匹配不到的条目统一返回NaN
  • 后续的fillna(df['Pack_Size'])会把所有NaN位置,用当前行原有的Pack_Size值填充,不会改动未匹配条目的原有内容

可选写法

如果更倾向于「仅对匹配到的条目做赋值」的显式逻辑,也可以用mask方法实现:

# 仅当Product_ID存在于字典键中时,才替换Pack_Size为字典对应值
df['Pack_Size'] = df['Pack_Size'].mask(
    df['Product_ID'].isin(pack_size_dict.keys()),
    df['Product_ID'].map(pack_size_dict)
)

注意事项

你当前定义的pack_size_dict键全部为字符串类型,如果DataFrame中Product_ID列存储的是整数/数值类型,会出现全部匹配失败的问题,使用前需要先统一数据类型,二选一即可:

  • 把列转为字符串类型:df['Product_ID'] = df['Product_ID'].astype(str)
  • 把字典键转为整数类型:pack_size_dict = {int(k):v for k,v in pack_size_dict.items()}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.31 20:19:01