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

如何以最Pythonic的方式将Pandas Series映射到列表(非字典)

更Pythonic的Pandas索引映射方案

当然有,给你几种不用字典、不用lambda的简洁实现:

1. 用numpy的take函数(最快最直接)

直接利用numpy的索引提取能力,效率拉满:

import pandas as pd
import numpy as np

df = pd.Series([0,1,2,3])
dx = ['a','b', 'c','d']

# 用df里的数值作为索引,提取dx中的元素
result = pd.Series(np.take(dx, df))

2. 借助列表的__getitem__方法配合map

列表的索引操作本质是调用__getitem__方法,直接把这个方法传给map就行,省去lambda:

df = pd.Series([0,1,2,3])
dx = ['a','b', 'c','d']

result = df.map(dx.__getitem__)

3. 用replace自动生成映射字典

如果你的索引是从0开始的连续整数,replace可以配合enumerate自动生成映射字典,比手动写字典省事:

df = pd.Series([0,1,2,3])
dx = ['a','b', 'c','d']

result = df.replace(dict(enumerate(dx)))

效率对比

  • 大数据量下优先选np.take,numpy底层实现速度最快;
  • 小数据量用map(__getitem__)足够简洁;
  • replace适合需要处理非连续索引的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 18:05:15