问答 · 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()返回惰性迭代器。