zoukankan      html  css  js  c++  java
  • Python apply函数

    Python apply函数

     

    1、介绍

    apply函数是pandas里面所有函数中自由度最高的函数。该函数如下:

    DataFrame.apply(func, axis=0, broadcast=False, raw=False, reduce=None, args=(), **kwds)

    该函数最有用的是第一个参数,这个参数是函数,相当于C/C++的函数指针。

    这个函数需要自己实现,函数的传入参数根据axis来定,比如axis = 1,就会把一行数据作为Series的数据 结构传入给自己实现的函数中,我们在函数中实现对Series不同属性之间的计算,返回一个结果,则apply函数 会自动遍历每一行DataFrame的数据,最后将所有结果组合成一个Series数据结构并返回。

    2、样例

    import numpy as np
    import pandas as pd
    
    
    f = lambda x: x.max()-x.min()
    
    df = pd.DataFrame(np.random.randn(4,3),columns=list('bde'),index=['utah', 'ohio', 'texas', 'oregon'])
    print(df)
    
    t1 = df.apply(f)
    print(t1)
    
    t2 = df.apply(f, axis=1)
    print(t2)

    输出结果如下所示:

                   b         d         e
    utah    1.106486  0.101113 -0.494279
    ohio    0.955676 -1.889499  0.522151
    texas   1.891144 -0.670588  0.106530
    oregon -0.062372  0.991231  0.294464
    
    b    1.953516
    d    2.880730
    e    1.016430
    dtype: float64
    
    utah      1.600766
    ohio      2.845175
    texas     2.561732
    oregon    1.053603
    dtype: float64

    3、性能比较

    df = pd.DataFrame({'a': np.random.randn(6),
                       'b': ['foo', 'bar'] * 3,
                       'c': np.random.randn(6)})
    
    
    def my_test(a, b):
        return a + b
    
    
    print(df)
    
    
    df['Value'] = df.apply(lambda row: my_test(row['a'], row['c']), axis=1) # 方法1
    print(df)
    
    df['Value2'] = df['a'] + df['c']  # 方法2
    print(df)

    输出结果如下:

              a    b         c
    0 -1.194841  foo  1.648214
    1 -0.377554  bar  0.496678
    2  1.524940  foo -1.245333
    3 -0.248150  bar  1.526515
    4  0.283395  foo  1.282233
    5  0.117674  bar -0.094462
    
              a    b         c     Value
    0 -1.194841  foo  1.648214  0.453374
    1 -0.377554  bar  0.496678  0.119124
    2  1.524940  foo -1.245333  0.279607
    3 -0.248150  bar  1.526515  1.278365
    4  0.283395  foo  1.282233  1.565628
    5  0.117674  bar -0.094462  0.023212
    
              a    b         c     Value    Value2
    0 -1.194841  foo  1.648214  0.453374  0.453374
    1 -0.377554  bar  0.496678  0.119124  0.119124
    2  1.524940  foo -1.245333  0.279607  0.279607
    3 -0.248150  bar  1.526515  1.278365  1.278365
    4  0.283395  foo  1.282233  1.565628  1.565628
    5  0.117674  bar -0.094462  0.023212  0.023212

    注意:当数据量很大时,对于简单的逻辑处理建议方法2(个人处理几百M数据集时,方法1花时200s左右,方法2花时10s)!!!


    1、介绍

  • 相关阅读:
    母版
    扣点计算
    付费推广的投入产出比达到多少才合理?
    关于京东POP和采销双平台选择合作
    学习Swift--枚举的初步认识 --个人备忘 大神勿喷
    前台操作及技巧的一些文档
    ABAP 四舍五入函数
    设置ALV 行颜色
    初学笔记
    模块 BAPI
  • 原文地址:https://www.cnblogs.com/yjd_hycf_space/p/11140695.html
Copyright © 2011-2022 走看看