插播一條廣告
Python數據挖掘與文本分析&Stata應用能力提升與實證前沿雲特訓
Python部分上課時間為6月29日-7月2日,感興趣的童鞋歡迎關注
pandas中有一個特別好用的apply方法,包括
下面我們看實驗數據
import pandas as pd
import numpy as np
matrix = [
['張三', '1995-12-31', '山東', '本科'],
['李四', '1993-05-29', '河北', '大專'],
['王五', '1995-03-14', '山西', '碩士'],
['趙六', '1992-07-08', '內蒙古', '本科'],
]
df = pd.DataFrame(matrix, columns=['Name', 'Birthday', 'From', 'Edu'])
df
NameBirthdayFromEdu0張三1995-12-31山東本科1李四1993-05-29河北大專2王五1995-03-14山西碩士3趙六1992-07-08內蒙古本科df.apply(func)或series.apply(func)axis控制操作方向
列內計算一般列內計算,實際上主要是對series做的操作,比如選中dataframe某列。
df['colname'].apply(func) 默認只對列方向對colname列做func操作,例如計算每個員工的出生年份、年齡。
def year(birthday):
#截取birthday字符串的年份
return int(birthday[:4])
#對birthday列使用year函數操作
df['Year'] = df['Birthday'].apply(year)
#年齡
df['Age'] = 2020-df['Year']
df
NameBirthdayFromEduYearAge0張三1995-12-31山東本科1995251李四1993-05-29河北大專1993272王五1995-03-14山西碩士1995253趙六1992-07-08內蒙古本科199228列間計算df.apply(func, axis=1)不同列之間可以有複雜的計算,比如想計算 設計自我介紹模板
def intro(r):
#r代指dataframe中的任意行,是series類型數據,擁有類似字典的使用方法。
return '大家好,我是{name},\
來自{province}省,\
今年{age}歲了!'.format(name=r['Name'],
province=r['From'],
age=r['Age'])
df['Intro'] = df.apply(intro, axis=1)
df
NameBirthdayFromEduYearAgeIntro0張三1995-12-31山東本科199525大家好,我是張三, 來自山東省, 今年25歲了!1李四1993-05-29河北大專199327大家好,我是李四, 來自河北省, 今年27歲了!2王五1995-03-14山西碩士199525大家好,我是王五, 來自山西省, 今年25歲了!3趙六1992-07-08內蒙古本科199228大家好,我是趙六, 來自內蒙古省, 今年28歲了!往期文章
稀罕作者