python里的apply,applymap和map的区别

转自:https://www.cnblogs.com/cymwill/p/7577369.html

https://blog.csdn.net/qq_42665335/article/details/81213175

apply,applymap和map的应用
总结:

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结构的话再看是要按行还是按列进行操作来选择对应的函数即可~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python中,map()和apply()都是用于对集合中的元素进行函数操作的函数,但是它们在使用方式和功能上有一些区别。 1. map()函数: - map()函数接受一个函数和一个可迭代对象作为参数,然后将该函数应用于可迭代对象中的每个元素,并返回一个包含结果的迭代器。 - map()函数返回的是一个惰性计算的结果,需要通过list()或者其他迭代器函数来获取结果。 - map()函数能够同时处理多个可迭代对象,将每个可迭代对象对应的元素作为参数传递给函数进行操作。 2. apply()函数: - apply()函数是pandas库中的一个函数,用于在DataFrame或Series对象上应用函数操作。 - apply()函数接受一个函数作为参数,然后将该函数应用于DataFrame或Series的每一行或每一列,并返回一个包含结果的新的DataFrame或Series。 - apply()函数默认在每一列上应用函数操作,可以通过指定axis参数为1来在每一行上应用函数操作。 总结: - map()函数适用于对可迭代对象中的每个元素进行函数操作,并返回一个迭代器。 - apply()函数适用于在DataFrame或Series上应用函数操作,并返回一个新的DataFrame或Series。 需要注意的是,apply()函数在处理大型数据集时效率较低,因为它是逐行或逐列进行操作的。在这种情况下,可以考虑使用其他更高效的函数,如applymap()、transform()或者矢量化操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值