当前位置: 首页 > 知识库问答 >
问题:

map、applymap与Pandas应用方法的差异

闾丘成双
2023-03-14

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

我看到mapseries方法,而其余的是dataframe方法。不过,我对applyapplymap方法感到困惑。为什么我们有两种方法用于将函数应用于DataFrame?同样,简单的例子说明用法将是伟大的!

共有1个答案

聂炜
2023-03-14

直接来自韦斯·麦金尼的Python for Data Analysis书,宝洁。132(我强烈推荐这本书):

另一个常见的操作是对一维数组的每列或每行应用一个函数。DataFrame的apply方法完全执行以下操作:

In [116]: frame = DataFrame(np.random.randn(4, 3), columns=list('bde'), index=['Utah', 'Ohio', 'Texas', 'Oregon'])

In [117]: frame
Out[117]: 
               b         d         e
Utah   -0.029638  1.081563  1.280300
Ohio    0.647747  0.831136 -1.549481
Texas   0.513416 -0.884417  0.195343
Oregon -0.485454 -0.477388 -0.309548

In [118]: f = lambda x: x.max() - x.min()

In [119]: frame.apply(f)
Out[119]: 
b    1.133201
d    1.965980
e    2.829781
dtype: float64

许多最常见的数组统计信息(如sum和mean)都是DataFrame方法,因此没有必要使用apply。

In [120]: format = lambda x: '%.2f' % x

In [121]: frame.applymap(format)
Out[121]: 
            b      d      e
Utah    -0.03   1.08   1.28
Ohio     0.65   0.83  -1.55
Texas    0.51  -0.88   0.20
Oregon  -0.49  -0.48  -0.31
In [122]: frame['e'].map(format)
Out[122]: 
Utah       1.28
Ohio      -1.55
Texas      0.20
Oregon    -0.31
Name: e, dtype: object
 类似资料:
  • 问题内容: 你能否通过基本示例告诉我何时使用这些矢量化方法? 我看到这是一种方法,而其余都是方法。我糊涂了约和,虽然方法。为什么我们有两种将函数应用于DataFrame的方法?同样,简单的例子可以很好地说明用法! 问题答案: 另一个常见的操作是将一维数组上的函数应用于每一列或每一行。DataFrame的apply方法正是这样做的: 许多最常见的数组统计信息(例如sum和mean)都是DataFra

  • 本文向大家介绍pandas map(),apply(),applymap()区别解析,包括了pandas map(),apply(),applymap()区别解析的使用技巧和注意事项,需要的朋友参考一下 基础 以下操作基于python 3.6 windows 10 环境下 通过 将通过实例来演示三者的区别 map()方法 通过df.(tab)键,发现df的属性列表中有apply() 和 apply

  • 本文向大家介绍pandas的相关系数与协方差实例,包括了pandas的相关系数与协方差实例的使用技巧和注意事项,需要的朋友参考一下 1、输出百分比变化以及前后指定的行数 2、计算DataFrame列与列的相关系数和协方差 3、计算DataFrame与列或者Series的相关系数 注意:在使用DataFrame或Series在计算相关系数或者协方差的时候,都会计算索引重叠的、非NA的、按照索引对齐原

  • 我想知道下面两个场景中是否有任何性能差异——peek()和map()带返回: 或 我在stackoverflow上读了几篇关于map()和peek()中setter的文章,我只发现了一个关于性能的信息。它说带有返回的map()会更糟,但没有解释为什么:如何在Stream链中调用setter

  • 问题内容: 有谁知道有效的函数/方法(例如)来计算数组的滚动差 这是我最接近的解决方案: 但是,它仅计算单步滚动差。理想情况下,步长是可编辑的(即当前时间步长与最后n个步长之间的差)。 我也写了这个,但是对于更大的数组,它很慢: 问题答案: 关于什么: 通常,您可以使用自己的功能替换该功能。请注意,在这种情况下,第一项将是。 定义以下内容: 您可以在处计算值之间的差异。

  • 问题内容: 我当时使用CROSS APPLY来连接Users和GeoPhone表,并且一切工作都很快,但是现在我在Phone列中有具有NULL值的Users。交叉应用会在最终输出中跳过这些行。所以我切换到OUTER APPLY。但是它的工作速度非常慢(当输出的总行数仅增加1000时,速度要慢15倍以上)。 相对: 我想了解原因。如我所见,执行计划是不同的。但是从理论上讲,我看不到任何可能导致这种速