pandas中关于apply、lambda的应用。

lambda

lambda:输入是传入到参数列表x的值,输出是根据表达式(expression)计算得到的值。
比如:lambda x, y: xy #函数输入是x和y,输出是它们的积xy
lambda x :x[-2:] #x是字符串时,输出字符串的后两位
lambda x :func #输入 x,通过函数计算后返回结果
lambda x: ‘%.2f’ % x # 对结果保留两位小数

apply

当想让方程作用在一维的向量上时,可以使用apply来完成,常常与lambda合用,如下所示

修改某列的字符,只保留后两位
df[‘time’]=df[‘time’].apply(lambda x :x[-2:])

例:由一组dataframe数据,包括有数值型的三列气象要素,由这三列通过公式计算人体舒适指数
在这里插入图片描述
应用到的人体舒适指数计算公式:
在这里插入图片描述

import pandas as pd
import numpy as np
import math
path='D:\\data\\57582.csv'  #文件路径
data=pd.read_csv(path,index_col=0,encoding='gbk')  #读取数据有中文时用gbk解码
#定义舒适指数公式函数,结果保留1位小数
def get_CHB(T,RH,S):
    return round(1.8*T-0.55*(1.8*T-26)*(1-RH/100)-3.2*math.sqrt(S)+32,1)
#增加一列CHB并计算数据后赋值
data['舒适指数']=data.apply(lambda x:get_CHB(x['平均气温'],x['平均相对湿度'],x['2M风速']),axis=1)
#打印结果
print(data)
#保存结果
data.to_csv('D:\\CHB.csv',encoding='gbk')

代码中使用了applylambda的组合,传入的参数x为整个data数据,在函数中引入的参数则是x[‘平均气温’],x[‘平均相对湿度’],x[‘2M风速’],与自定义的函数get_CHB对应。最后需使用axis=1来指定是对列进行运算。

结果如图所示:

在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值