apply,applymap和map的区别

转载:python里的apply,applymap和map的区别 - chen狗蛋儿 - 博客园


总结:

apply用在dataframe上,用于对row或者column进行计算;

(有些地方发现对于series类型数据应用apply也可以,???)

applymap用于dataframe上,是元素级别的操作;

map(其实是python自带的)用于series上,是元素级别的操作。

在Python中如果想要对数据使用函数,可以借助apply(),applymap(),map() 来应用函数,括号里面可以是直接函数式,或者自定义函数(def)或者匿名函数(lambad)。

```

import pandas as pd

import numpy as np

from pandas import DataFrame

from pandas import Series

df1= DataFrame({

"sales1":[-1,2,3],

"sales2":[3,-5,7],

})

df1

```

1、当我们要对数据框(DataFrame)的数据进行按行或按列操作时用apply()

```df1.apply(lambda x :x.max()-x.min(),axis=1)```

#axis=1,表示按行对数据进行操作

#从下面的结果可以看出,我们使用了apply函数之后,系统自动按行找最大值和最小值计算,每一行输出一个值

0 4

1 7

2 4

dtype: int64

df1.apply(lambda x :x.max()-x.min(),axis=0)

#默认参数axis=0,表示按列对数据进行操作

#从下面的结果可以看出,我们使用了apply函数之后,系统自动按列找最大值和最小值计算,每一列输出一个值

```

sales1 4

sales2 12

dtype: int64

```

2、当我们要对数据框(DataFrame)的每一个数据进行操作时用applymap(),返回结果是DataFrame格式

```df1.applymap(lambda x : 1 if x>0 else 0)```

#从下面的结果可以看出,我们使用了applymap函数之后,

#系统自动对每一个数据进行判断,判断之后输出结果


3、当我们要对Series的每一个数据进行操作时用map()

```df1.sales1.map(lambda x : 1 if x>0 else 0)```

#df1.sales1就是一个Series

0 0

1 1

2 1

Name: sales1, dtype: int64


4、总结:要对数据进行应用函数时,先看数据结构是DataFrame还是Series,Seriesj结构直接用map(),DataFrame结构的话再看是要按行还是按列进行操作来选择对应的函数即可~

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容