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來指定是對列進行運算。

結果如圖所示:

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM