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

如何基于pandas DataFrame的id列匹配字典值新增对应type列

Pandas 基于id列映射生成新列的实现方案

错误原因

你之前的写法无法生效是因为df.assign()的入参键位对应要新增的列名,你直接传入映射字典作为参数,会被识别为要新增aa、bb、ci三个独立列,完全不符合需求。

可行方案

你要实现的是基于id列的值匹配字典映射,用Series.map()方法即可完成,这也是字典映射生成新列的标准实现方式:

  1. 先定义你的映射字典(如果需要数值类型就不要给值加引号)
id_map = {'aa': 160, 'bb': 80, 'ci': 70}
  1. 直接生成新列
# 直接赋值写法
df['type'] = df['id'].map(id_map)

# 链式assign写法(适合写方法链的场景)
df = df.assign(type=lambda x: x['id'].map(id_map))

可选扩展

如果存在id列的值不在映射字典里的场景,可以搭配fillna()设置默认值,比如未匹配到的行type默认填0:

df['type'] = df['id'].map(id_map).fillna(0)

运行后输出结果和你期望的完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 19:51:04