美文网首页Python基础系列PythonPython
Python eval、apply、applymap和map函数

Python eval、apply、applymap和map函数

作者: 我爱学python | 来源:发表于2019-08-26 16:41 被阅读0次

    描述

    eval() 函数用来执行一个字符串表达式,并返回表达式的值。

    语法

    以下是 eval() 方法的语法:
    eval(expression[, globals[, locals]])

    参数

    expression -- 表达式。
    globals -- 变量作用域,全局命名空间,如果被提供,则必须是一个字典对象。
    locals -- 变量作用域,局部命名空间,如果被提供,可以是任何映射对象。

    返回值

    返回表达式计算结果。

    实例

    以下展示了使用 eval() 方法的实例:

    >>>x = 7
    >>> eval( '3 * x' )
    21
    >>> eval('pow(2,2)')
    4
    >>> eval('2 + 2')
    4
    >>> n=81
    >>> eval("n + 4")
    85
    

    eval函数作用

    eval函数就是实现list、dict、tuple与str之间的转化
    str函数把list,dict,tuple转为为字符串

    一、字符串转换成列表

    '''
    遇到问题没人解答?小编创建了一个Python学习交流QQ群:857662006 
    寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书
    '''
    a = "[[1,2], [3,4], [5,6], [7,8], [9,0]]"
    print(type(a))
    b = eval(a)
    print(type(b))
    print(b)
    
    img

    二、字符串转换成字典

    a = "{1: 'a', 2: 'b'}"
    print(type(a))
    b = eval(a)
    print(type(b))
    print(b)
    
    img

    三、字符串转换成元组

    a = "([1,2], [3,4], [5,6], [7,8], (9,0))"
    print(type(a))
    b=eval(a)
    print(type(b))
    print(b)
    
    img

    apply、applymap和map的应用

    • apply 用在dataframe上,用于对row或者column进行计算;
    • applymap 用于dataframe上,是元素级别的操作;
    • map (python自带)用于series上,是元素级别的操作。

    如:

    >>> df = pd.DataFrame(np.random.randint(0,10,(4, 3)), columns=list('bde'), index=range(4))
    >>> df
       b  d  e
       2  0  5
       8  9  1
       3  6  6
       4  8  4
    

    apply:作用在dataframe的一行或一列上

    '''
    遇到问题没人解答?小编创建了一个Python学习交流QQ群:857662006 
    寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书
    '''
    >>> f = lambda x: x.max() - x.min()
    >>> df.apply(f)
    b    6
    d    9
    e    5
    dtype: int64 
    >>> df.apply(f,axis=1)  # 作用在一行上
       5
       8
       3
       4
    dtype: int64
    >>> df.apply(f,axis=0)  # 作用在一列上,axis=0可省略
    b    6
    d    9
    e    5
    dtype: int64
    ```
    applymap:作用在dataframe的每一个元素上
    ```
    '''
    遇到问题没人解答?小编创建了一个Python学习交流QQ群:857662006 
    寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书
    '''
    >>> f2 = lambda x: x+1 if x%2==0 else x
    >>> df.applymap(f2)
       b  d  e
       3  1  5
       9  9  1
       3  7  7
       5  9  5
    ```
    关于apply传入多个参数:
    ```
    >>> data = {'id':range(5),'value':list("abcab")}
    >>> frame = pd.DataFrame(data)
    >>> frame
       id value
      0     a
      1     b
      2     c
      3     a
      4     b
    
    >>> def testf(x, str):
    ...     return x,str
    
    >>> frame["id"].apply(testf, args=("ok",))
       (0, ok)
       (1, ok)
       (2, ok)
       (3, ok)
       (4, ok)
    Name: id, dtype: object
    # 注意这里args只能传入(元组),不能是"ok"或("ok")
    ```

    相关文章

      网友评论

        本文标题:Python eval、apply、applymap和map函数

        本文链接:https://www.haomeiwen.com/subject/xtddectx.html