小编典典

Pandas 中 map、applymap 和 apply 方法的区别

all

你能告诉我什么时候使用这些矢量化方法和基本示例吗?

我看到这map是一种Series方法,而其余的是DataFrame方法。我对applyapplymap方法感到困惑。为什么我们有两种方法可以将函数应用于
DataFrame?同样,说明用法的简单示例会很棒!


阅读 113

收藏
2022-03-06

共1个答案

小编典典

比较[map](https://pandas.pydata.org/pandas-

docs/stable/reference/api/pandas.Series.map.html),applymapapply: 上下文很重要

第一个主要区别: 定义

  • map仅在系列上定义
  • applymap仅在 DataFrames 上定义
  • apply两者都定义

第二个主要区别: 输入参数

  • map接受dicts Series、 或 callable
  • applymapapply仅接受可调用对象

第三个主要区别: 行为

  • map是元素级的系列
  • applymap对于 DataFrames 是 elementwise
  • apply也可以按元素工作,但适用于更复杂的操作和聚合。行为和返回值取决于函数。

第四大区别(最重要的一个): USE CASE

  • map用于将值从一个域映射到另一个域,因此针对性能进行了优化(例如,df['A'].map({1:'a', 2:'b', 3:'c'})
  • applymap适用于跨多行/多列的元素转换(例如,df[['A', 'B', 'C']].applymap(str.strip)
  • apply用于应用任何无法矢量化的函数(例如df['sentences'].apply(nltk.sent_tokenize))。

另请参阅我何时应该(不)想在我的代码中使用 pandasapply()?在一篇文章中,我在最适合使用的场景上做了一段时间apply(请注意,数量不多,但有一些——应用通常 很慢 )。


总结

在此处输入图像描述

脚注

  1. map当传递一个字典/系列时,将根据该字典/系列中的键映射元素。缺失值将在输出中记录为 NaN。

2.
applymap在最近的版本中已针对某些操作进行了优化。您会发现applymapapply某些情况下要快一些。我的建议是测试它们并使用更好的方法。

  1. map针对元素映射和转换进行了优化。涉及字典或系列的操作将使 pandas 能够使用更快的代码路径以获得更好的性能。

  2. Series.apply返回用于聚合操作的标量,否则返回
    Series。同样对于DataFrame.apply。请注意,apply当使用某些 NumPy 函数(例如 、
    等)调用时,它也有快速mean路径 sum

2022-03-06