Python中如何直接将pandas Series通过字典迭代映射生成新Series?
最优实现方案
pandas 原生提供了Series.map()方法专门处理这类映射需求,是当前场景下性能最高、写法最简洁的实现:
s1 = pd.Series(['a','b','c','d']) d = {'a':1, 'b':2, 'c':3, 'd':4} # 直接调用map方法传入字典即可 s2 = s1.map(d)
方案优势
- 完全匹配你的需求:自动遍历Series的每个元素,通过字典做映射匹配,输出结果为目标Series格式
- 不需要手动写迭代逻辑,内部做了矢量化优化,数据量越大相对列表推导式的性能优势越明显
- 规避了直接调用
d.values()的顺序风险:完全按照Series原有元素顺序做匹配,不会因为Python 3.7之前版本字典不保留插入顺序的特性出现结果错位的问题 - 异常情况处理更友好:如果Series中出现字典不存在的key,会自动返回NaN,你也可以搭配
fillna()自定义默认值,示例:# 未匹配到的元素默认填充为0 s2 = s1.map(d).fillna(0, downcast='infer')
内容的提问来源于stack exchange,提问作者redhouse
相关产品推荐
相关产品推荐

