pandas中apply與map的異同

◆?◆?◆ ?◆?◆
pandas作為數(shù)據(jù)處理與分析的利器,它的江湖地位非同小可。在我們數(shù)據(jù)處理與分析過程中,有時(shí)候需要對某一列的每一個(gè)值都進(jìn)行處理,這時(shí)候推薦大家使用apply或者map。
一、直接使用內(nèi)置函數(shù)或者numpy函數(shù)
# 數(shù)據(jù)展示df:年齡0 alan 191 black 152 cici 233 david 224 eric 18#?計(jì)算字符長度df['姓名'].apply(len):?0 41 52 43 54 4Name: 姓名, dtype: int64# 計(jì)算平方df['年齡'].apply(np.square):?0 3611 2252 5293 4844 324Name: 年齡, dtype: int64
二、使用lambda匿名函數(shù)
>>> df['年齡'].apply(lambda?x:?'已成年'?if?x>=18?else?'未成年')Out[4]:?0 已成年1 未成年2 已成年3 已成年4 已成年Name: 年齡, dtype: object>>> df['姓名'].apply(lambda?x:?x.title())Out[5]:?0 Alan1 Black2 Cici3 David4 EricName: 姓名, dtype: object
# 自定義函數(shù)def fn(x):if x >=18:return '成年人'else:return '未成年'# 自定義函數(shù)作為apply參數(shù)??????df['年齡'].apply(fn):?0 成年人1 未成年2 成年人3 成年人4 成年人Name: 年齡, dtype: object
# 計(jì)算字符長度df['姓名'].map(len):?0 41 52 43 54 4Name: 姓名, dtype: int64# 計(jì)算平方df['年齡'].map(np.square):?0 3611 2252 5293 4844 324Name: 年齡, dtype: int64
# 根據(jù)年齡打標(biāo)簽:是否成年>>>?df['年齡'].map(lambda?x:?'已成年'?if?x>=18?else?'未成年')Out[9]:?0 已成年1 未成年2 已成年3 已成年4 已成年Name: 年齡, dtype: object# 修改姓名為首字母大寫>>>?df['姓名'].map(lambda?x:?x.title())Out[10]:?0 Alan1 Black2 Cici3 David4 EricName: 姓名, dtype: object
三、使用def自定義函數(shù)
#?自定義函數(shù)作為map參數(shù)??????df['年齡'].map(fn):?0 成年人1 未成年2 成年人3 成年人4 成年人Name: 年齡, dtype: object
四、使用dict作為map參數(shù)
# apply沒有這種功能!>>> df['姓名'].map({'alan':'女','black':'男','cici':'女','david':'男','eric':'男'})Out[12]:?0 女1 男2 女3 男4 男Name: 姓名, dtype: object
記得點(diǎn)在看~祝大家一夜暴富,基金、股票一片紅~

評論
圖片
表情
