pandas中map,apply,applymap的区别

本文深入探讨Pandas库中Series和DataFrame数据结构的操作方法,包括apply、map、agg、transform等函数的详细使用场景及参数说明,为数据处理提供高效解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

基于Series数据结构的操作

pandas.Series.apply
Series.map
对元素进行按元素操作
For element-wise operations

Series.agg
官网注明只能使用聚合类型的操作,如sum,count,mean,std,prod,first,last,可以使用多个

only perform aggregating type operations
 

但是实际上自定义函数也是可以使用的,也可以args加入多个参数,但是这就抢了apply的饭碗了。

ratings['rating'].agg(minusone,args=(1,))

only perform aggregating type operations



Series.transform

only perform transformating type operation

这里拿一个例子来说明,df调用是按列调用,首先计算了这列的均值和标准差,在把最终计算结果放到对应的位置上去。

df = pd.DataFrame(np.random.randn(10, 3), columns=['A', 'B', 'C'],
...                   index=pd.date_range('1/1/2000', periods=10))
df.iloc[3:7] = np.nan
>>> df.transform(lambda x: (x - x.mean()) / x.std())
                   A         B         C
2000-01-01  0.579457  1.236184  0.123424
2000-01-02  0.370357 -0.605875 -1.231325
2000-01-03  1.455756 -0.277446  0.288967
2000-01-04       NaN       NaN       NaN
2000-01-05       NaN       NaN       NaN
2000-01-06       NaN       NaN       NaN
2000-01-07       NaN       NaN       NaN
2000-01-08 -0.498658  1.274522  1.642524
2000-01-09 -0.540524 -1.012676 -0.828968
2000-01-10 -1.366388 -0.614710  0.005378

Series.apply

官网注明可以应用更复杂的函数到Series,所以当你不知道用啥的时候就apply就对了
For applying more complex functions on a Series.

不仅可以传参数元组,还可以传入参数列表

def add_custom_values(x, **kwargs):
...     for month in kwargs:
...         x+=kwargs[month]
...     return x
>>> series.apply(add_custom_values, june=30, july=20, august=25)
London      95
New York    96
Helsinki    87
dtype: int64

还可以调用np的函数,虽然以上几个都可以,(lll¬ω¬)

ratings['rating'].map(np.log)
 

 



基于DataFrame数据结构的操作

pandas.DataFrame.apply

DataFrame.apply
Apply a function row-/column-wise.

既可以按列又可以按行进行计算

这个功能太强大了,默认参数较多,我就不一一列举了,可以点进去自己看

http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.apply.html#pandas.DataFrame.apply


DataFrame.applymap

这个是应用到整个df上的,无默认参数,不多bb,用了就是全部转换
Apply a function elementwise on a whole DataFrame.

 

另外DataFrame.agg和DataFrame.transform也是存在的,多了默认参数axis和参数元组和参数列表

DataFrame.aggregate(func, axis=0, *args, **kwargs)

 

pandas中的applymapapplymap都是用于对DataFrame或Series中的数据进行函数应用的方法,它们的具体使用方式和作用略有不同。 1. apply方法 apply方法是用于对DataFrame或Series的行或列执行函数操作的方法。可以通过传递axis参数来指定是对行还是列进行操作,默认是对列进行操作。apply方法接受一个函数作为参数,并将该函数应用到DataFrame或Series的每一个元素上,然后将结果组合成一个新的DataFrame或Series。 示例: ``` import pandas as pd data = {'A': [1, 2, 3], 'B': [4, 5, 6], 'C': [7, 8, 9]} df = pd.DataFrame(data) def add_one(x): return x + 1 # 对每一列执行add_one函数 df.apply(add_one) # 对每一行执行add_one函数 df.apply(add_one, axis=1) ``` 2. map方法 map方法是用于对Series中的每一个元素执行函数操作的方法。它接受一个函数作为参数,并将该函数应用到Series的每一个元素上,然后将结果组合成一个新的Series。 示例: ``` import pandas as pd data = {'A': [1, 2, 3], 'B': [4, 5, 6], 'C': [7, 8, 9]} df = pd.DataFrame(data) def add_one(x): return x + 1 # 对Series A 中的每一个元素执行add_one函数 df['A'].map(add_one) ``` 3. applymap方法 applymap方法是用于对DataFrame中的每一个元素执行函数操作的方法。它接受一个函数作为参数,并将该函数应用到DataFrame的每一个元素上,然后将结果组合成一个新的DataFrame。 示例: ``` import pandas as pd data = {'A': [1, 2, 3], 'B': [4, 5, 6], 'C': [7, 8, 9]} df = pd.DataFrame(data) def add_one(x): return x + 1 # 对DataFrame中的每一个元素执行add_one函数 df.applymap(add_one) ``` 总结: apply方法适用于对DataFrame或Series的行或列执行函数操作;map方法适用于对Series中的每一个元素执行函数操作;applymap方法适用于对DataFrame中的每一个元素执行函数操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值