1. 程式人生 > 其它 >pandas中apply與lambda

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

結果如圖所示: