zoukankan      html  css  js  c++  java
  • 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='data.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')

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

    结果如图所示:

     

  • 相关阅读:
    使SourceInsight支持Python语言的方法
    图解Join
    EularProject 42:单词解码出来的三角形数
    android-async-http二次封装和调用
    #20 Valid Parentheses
    udev详解【转】
    linux下udev简介【转】
    Linux USB 驱动开发(一)—— USB设备基础概念【转】
    Android updater-scripts(Edify Script)各函数详细说明【转】
    OTA制作及升级过程笔记【转】
  • 原文地址:https://www.cnblogs.com/coco2015/p/15736644.html
Copyright © 2011-2022 走看看