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

如何基于值为列表的字典为Pandas DataFrame新增列

解决方法

你用df['col1'].map(dct)返回NaN的原因是:map方法会把col1中的每个值当作键去查询字典,但你的字典dct的键是'A'、'B'这类类别标识,而非col1里的数值,自然匹配不到结果。

正确的做法是先构建一个值到类别键的反向映射字典,再用map方法:

  1. 构建反向映射字典
reverse_dct = {val: key for key, lst in dct.items() for val in lst}

这个字典会把原字典列表里的每个数值,对应到所属的类别键,比如111: 'A'、456: 'B'。

  1. 生成col2列
import pandas as pd

df = pd.DataFrame({'col1': [111, 333, 456]})
dct = {'A': [111, 222, 333, 444], 'B': [123, 456, 789]}

reverse_dct = {val: key for key, lst in dct.items() for val in lst}
df['col2'] = df['col1'].map(reverse_dct)

执行后得到的结果:

col1 col2
0   111    A
1   333    A
2   456    B

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 14:29:09