python DataFrame的apply方法使用详解

我自己对于apply方法的理解是:其最重要的参数是传入的函数,传入的函数会对DataFrame的每一行(index)或每一列(column)进行操作,然后返回每一个index或column对应的值,再将这些行(或者列)以及其对应的返回值重新组合成一个DataFrame的对象,然后作为整个apply方法的返回值返回。

至于传入的函数具体是对每一行还是每一列进行操作,取决于apply传入的axis参数,默认axis=0,表示对每一列进行操作,axis=1,表示对每一行进行操作。因此apply方法最重要两个参数是传入的函数func和axis。

[python] view plain copy

#函数应用和映射  

import numpy as np  

import pandas as pd  

df=pd.DataFrame(np.random.randn(4,3),columns=list('bde'),index=['utah','ohio','texas','oregon'])  

print(df)  

            b         d         e

utah   -0.451195 -0.183451 -0.297182

ohio    0.443792  0.925751 -1.320857

texas   1.039534 -0.927392  0.611482

oregon  0.938760  1.265244  0.313582

[python] view plain copy

#将函数应用到由各列或行形成的一维数组上。DataFrame的apply方法可以实现此功能  

f=lambda x:x.max()-x.min()  

#默认情况下会以列为单位,分别对列应用函数  

t1=df.apply(f)  

print(t1)  

t2=df.apply(f,axis=1)  

print(t2)  

b    1.490729

d    2.192636

e    1.932339

dtype: float64

utah      0.267744

ohio      2.246608

texas     1.966925

oregon    0.951662

dtype: float64

[python] view plain copy

#除标量外,传递给apply的函数还可以返回由多个值组成的Series  

def f(x):  

    return pd.Series([x.min(),x.max()],index=['min','max'])  

t3=df.apply(f)  

#从运行的结果可以看出,按列调用的顺序,调用函数运行的结果在右边依次追加  

print(t3)  

         b         d         e

min -0.451195 -0.927392 -1.320857

max  1.039534  1.265244  0.611482

[python] view plain copy

#元素级的python函数,将函数应用到每一个元素  

#将DataFrame中的各个浮点值保留两位小数  

f=lambda x: '%.2f'%x  

t3=df.applymap(f)  

print(t3)  

           b      d      e

utah    -0.45  -0.18  -0.30

ohio     0.44   0.93  -1.32

texas    1.04  -0.93   0.61

oregon   0.94   1.27   0.31

[python] view plain copy

#注意,这里之所以叫applymap,是因为Series有一个永远元素级函数的map方法  

t4=df['e'].map(f)  

print(t4)  

utah      -0.30

ohio      -1.32

texas      0.61

oregon     0.31

Name: e, dtype: object

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值