python DataFrame的apply方法

#函数应用和映射
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

#将函数应用到由各列或行形成的一维数组上。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
#除标量外,传递给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函数,将函数应用到每一个元素
#将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
#注意,这里之所以叫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

  • 13
    点赞
  • 57
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值