Pandas map、applymap和apply方法的不同之处

Pandas map、applymap和apply方法的不同之处

在本文中,我们将介绍Pandas中map、applymap和apply方法的不同之处,这三种方法在Pandas中很常用,但是很多人可能不知道它们的差异,下面我们将逐个介绍。

阅读更多:Pandas 教程

map方法

Pandas中的map方法主要是用于Series类型中的数据映射,它的语法是:map(arg, na_action=None)。其中,arg可以是以下三种形式之一:

  • 字典:key表示原数据(Series)中的值,value表示map之后的值;
  • 可迭代对象(例如列表):返回的是一个列表,列表的每个元素都是map之后的值;
  • 函数:返回的是一个函数应用于Series中的每个元素之后的结果。

下面我们举个例子来看看map方法的用法:

import pandas as pd

s = pd.Series([1, 2, 3, 4, 5, 6])
replaced_s = s.map({1: 'one', 2: 'two', 3: 'three'})
print(replaced_s)
Python

输出结果:

0      one
1      two
2    three
3      NaN
4      NaN
5      NaN
dtype: object
Python

可以看到,map方法将原Series中的1、2、3分别映射为’one’、’two’、’three’,而其他的值则被映射成了NaN。

applymap方法

与map方法不同的是,applymap方法主要是用于DataFrame中所有元素的批量操作,其语法为:applymap(func),其中,func是一个函数,这个函数应该能够接受一个元素(单元格)并返回一个处理过的元素(单元格)。

下面我们举例来看看applymap方法的用法:

import pandas as pd

df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})
result = df.applymap(lambda x: x * x)
print(result)
Python

输出结果:

   A   B
0  1  16
1  4  25
2  9  36
Python

可以看到,我们将DataFrame中的所有元素都平方了。

apply方法

与applymap方法不同的是,apply方法主要是用于DataFrame中某列(Series)的批量操作,其语法为:apply(func, axis=0)。其中,func是一个函数,它将应用于一个Series,axis=0表示横向(对列进行操作),axis=1表示纵向(对行进行操作)。

下面我们举个例子来看看apply方法的用法:

import pandas as pd

df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})
result = df['A'].apply(lambda x: x*x)
print(result)
Python

输出结果:

0    1
1    4
2    9
Name: A, dtype: int64
Python

我们对DataFrame中的’A’列进行了平方操作,结果就是一个新的Series。

总结

综上所述,map方法主要是用于Series类型中的数据映射;applymap方法主要是用于DataFrame中所有元素的批量操作;apply方法主要用于DataFrame中某列(Series)的批量操作。需要注意的是,这三种方法在操作中都可以使用lambda函数等匿名函数,非常方便,但是需要注意表达式的正确性和语法格式。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册