问答 · ANSWER

pandas 的 map、apply 和 applymap 有什么区别?

直接回答
map用于单列元素映射,apply用于沿轴批量计算,applymap(新版为DataFrame.map)用于全表单元格变换。三者适用对象和轴向不同。

关键要点

  • Series.map仅作用于单个Series(一列),做元素级的值替换或映射。
  • DataFrame.apply作用于DataFrame,沿axis=0(按列)或axis=1(按行)批量计算。
  • DataFrame.map(原applymap)作用于整张DataFrame,对每一个单元格做元素级变换。
  • apply的axis=1适合多列交叉运算(如单价×数量),axis=0适合列级聚合(如求均值)。
  • 传入NumPy通用函数(ufunc)时性能较优,传入普通Python函数时性能与循环相近。
  • pandas 3.0中已移除applymap,统一使用DataFrame.map进行全表元素级变换。

怎么选 / 怎么做

按顺序判断:
- 只处理一列的值映射 → 用 Series.map;
- 需要沿行或沿列把多列组合成一个结果 → 用 DataFrame.apply;
- 需要对整张表的每个单元格做同一个轻量变换 → 用 DataFrame.map。

常见问题

DataFrame.apply 的 axis=0 和 axis=1 有什么区别?

axis=1沿行计算,每行一个结果;axis=0沿列聚合,每列一个结果。

pandas 3.0 中 applymap 被什么取代了?

被 DataFrame.map 取代,功能和参数不变。

Series.map 和 Python 内置 map() 主要区别?

Series.map立即返回新Series;内置map()返回惰性迭代器。

深入学

小象教研组整理 · 内容来自课程讲义与企业内训素材,仅供学习参考。