場景如下:
現在有一個dataframe,其中一列為score,值從0-100,
df:
score
98
88
37
68
86
33
現在需要增加一列level,給這些分數分類,90分以上為A,60-90為B,60以下為C。
常用的方法肯定是使用for循環,對每一行進行處理。
import pandas as pdlist = [98,88,37,68,86,33]df = pd.DataFrame(list, columns=['score']) # convert list to dataframedf['level'] = '' # add a columndef judgeLevel(df): for i in range(len(df)): if df.score.ix[i] < 60: df.level.ix[i] = 'C' elif df.score.ix[i] > 90: df.level.ix[i] = 'A' else: df.level.ix[i] = 'B' return dfdf = judgeLevel(df)
還有一種方法,是使用python的匿名函數:lambda函數
import pandas as pd list = [98,88,37,68,86,33] df = pd.DataFrame(list, columns=['score']) df['level'] = '' # add a column def judgeLevel(df): if df['score'] < 60: return 'C' elif df['score'] > 90: return 'A' else: return 'B' df['level'] = df.apply(lambda r: judgeLevel(r), axis=1)
至于如何取舍,就由各位自行決定了,多學一點總不是壞處,對吧?
以上這篇python 用lambda函數替換for循環的方法就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持武林站長站。
新聞熱點
疑難解答