如何将字典中的仅数值元素映射到DataFrame新列?
从字典列表值中提取数值映射到DataFrame列
针对你遇到的问题,这里提供几种可行的解决方法,其中包含你期望的.str[]用法:
方法1:使用.str[]提取列表元素
先通过map匹配字典中的列表值,再用.str[1]提取列表的第二个元素(数值部分):
df['count'] = df['state'].map(dic).str[1]
原理:map(dic)会将state列的每个值对应到字典中的列表,.str[]可以对Series中的列表元素进行索引取值,索引1对应列表里的数值项。
方法2:提前转换字典为数值映射
先将原字典转换为仅包含数值的新字典,再进行映射:
# 生成只保留数值的字典 num_dict = {key: value[1] for key, value in dic.items()} # 映射到DataFrame df['count'] = df['state'].map(num_dict)
这种方式适合需要多次复用该映射的场景,避免重复提取元素。
方法3:使用apply自定义提取逻辑
通过apply对每个state值执行自定义函数,直接提取对应数值:
df['count'] = df['state'].apply(lambda x: dic[x][1])
该方法逻辑直观,适合简单的自定义提取需求。
执行上述任意一种方法后,都能得到你期望的结果:
date state count 2018-01-13 AR 804.0 2018-02-23 CA 223.0
内容的提问来源于stack exchange,提问作者prina sikowitz
相关产品推荐
相关产品推荐

