插播一條廣告
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
Name | Birthday | From | Edu | |
---|---|---|---|---|
0 | 張三 | 1995-12-31 | 山東 | 本科 |
1 | 李四 | 1993-05-29 | 河北 | 大專 |
2 | 王五 | 1995-03-14 | 山西 | 碩士 |
3 | 趙六 | 1992-07-08 | 內蒙古 | 本科 |
df.apply(func)或series.apply(func)
axis控制操作方向
0 表示列方向
1 表示行方向
列內計算
一般列內計算,實際上主要是對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
Name | Birthday | From | Edu | Year | Age | |
---|---|---|---|---|---|---|
0 | 張三 | 1995-12-31 | 山東 | 本科 | 1995 | 25 |
1 | 李四 | 1993-05-29 | 河北 | 大專 | 1993 | 27 |
2 | 王五 | 1995-03-14 | 山西 | 碩士 | 1995 | 25 |
3 | 趙六 | 1992-07-08 | 內蒙古 | 本科 | 1992 | 28 |
列間計算
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
Name | Birthday | From | Edu | Year | Age | Intro | |
---|---|---|---|---|---|---|---|
0 | 張三 | 1995-12-31 | 山東 | 本科 | 1995 | 25 | 大家好,我是張三, 來自山東省, 今年25歲了! |
1 | 李四 | 1993-05-29 | 河北 | 大專 | 1993 | 27 | 大家好,我是李四, 來自河北省, 今年27歲了! |
2 | 王五 | 1995-03-14 | 山西 | 碩士 | 1995 | 25 | 大家好,我是王五, 來自山西省, 今年25歲了! |
3 | 趙六 | 1992-07-08 | 內蒙古 | 本科 | 1992 | 28 | 大家好,我是趙六, 來自內蒙古省, 今年28歲了! |
往期文章Python語法快速入門
Python網絡爬蟲與文本數據分析
讀完本文你就瞭解什麼是文本分析
綜述:文本分析在市場營銷研究中的應用
從記者的Twitter關注看他們稿件的黨派傾向?
Pandas時間序列數據操作
70G上市公司定期報告數據集
文本數據清洗之正則表達式
shreport庫: 批量下載上海證券交易所上市公司年報
Numpy和Pandas性能改善的方法和技巧
漂亮~pandas可以無縫銜接Bokeh
YelpDaset: 酒店管理類數據集10+G
半個小時學會Markdown標記語法