python apply, applymap,map

apply, applymap,map函数的传入参数都是函数, 但是操作对象不一样;区别如下: 

 

 

1、对数据框(DataFrame)的数据进行按行(axis=0)或按列(axis=1)操作时用apply()

以下是源文档部分重要的解释:
def apply(self, func, axis=0):
    """
    Apply a function along an axis of the DataFrame.
func : function
    Function to apply to each column or row.
axis : {0 or 'index', 1 or 'columns'}, default 0
    Axis along which the function is applied:
Examples
--------

>>> df = pd.DataFrame([[4, 9],] * 3, columns=['A', 'B'])
>>> df
   A  B
0  4  9
1  4  9
2  4  9

Using a numpy universal function (in this case the same as
``np.sqrt(df)``):

>>> df.apply(np.sqrt)
     A    B
0  2.0  3.0
1  2.0  3.0
2  2.0  3.0

Using a reducing function on either axis

>>> df.apply(np.sum, axis=0)
A    12
B    27
dtype: int64

>>> df.apply(np.sum, axis=1)
0    13
1    13
2    13
dtype: int64

 

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

applymap(self, func):
    """
    Apply a function to a Dataframe elementwise.


    Parameters
    ----------
    func : callable
        Python function, returns a single value from a single value.

    Returns
    -------
    DataFrame
        Transformed DataFrame.
Examples
--------
>>> df = pd.DataFrame([[1, 2.12], [3.356, 4.567]])
>>> df
       0      1
0  1.000  2.120
1  3.356  4.567


>>> df.applymap(lambda x: x**2)
           0          1
0   1.000000   4.494400
1  11.262736  20.857489

 

3、对Series的每一个数据进行操作时用map() ; 返回的数据类型也是serise

 

import numpy as np
import pandas as pd

a = pd.Series(np.array(range(10)))

b = a.map(lambda x:x**2)
print(b)

0     0
1     1
2     4
3     9
4    16
5    25
6    36
7    49
8    64
9    81
dtype: int64
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值