pandasCookbook 第三講——建立規(guī)則

  • 建立規(guī)則
    針對(duì)多列的規(guī)則
import pandas as pd 
import numpy as np 
df=pd.DataFrame({'AAA':[4,5,6,7],'BBB':[10,20,30,40],'CCC':[100,50,-30,-50]}) 
df 
AAA BBB CCC
0 4 10 100
1 5 20 50
2 6 30 -30
3 7 40 -50

通過(guò)‘與’規(guī)則,這樣會(huì)返回一個(gè)Series

newSeries=df.loc[(df['BBB']<25)&(df['CCC']>=-40),'AAA'] 
newSeries 

0 4
1 5
Name: AAA, dtype: int64

通過(guò) ‘或’規(guī)則,同樣返回一個(gè)Series,注意我在這里的寫法是df.BBB,等效于df['BBB']

newSeries=df.loc[(df.BBB>25) | (df.CCC >=75),'AAA'] 
newSeries 

0 4
2 6
3 7
Name: AAA, dtype: int64

通過(guò)對(duì)規(guī)則運(yùn)用后的賦值,來(lái)得到一個(gè)修改后的dataframe

df.loc[(df.BBB>25)|(df.CCC>=75),['AAA','BBB']]=0.1 
df 
AAA BBB CCC
0 0.1 0.1 0.1
1 5.0 20.0 50.0
2 0.1 0.1 0.1
3 0.1 0.1 0.1

用argsort()對(duì)某個(gè)列排序 (按照與指定值最相近)

df=pd.DataFrame({'AAA':[4,5,6,7],'BBB':[10,20,30,40],'CCC':[100,50,-30,-50]}) 
df 
aValue=43.0 
df.ix[(df.BBB-aValue).abs().argsort()] 
AAA BBB CCC
3 7 40 -50
2 6 30 -30
1 5 20 50
0 4 10 100

用二元操作符動(dòng)態(tài)地建立'標(biāo)準(zhǔn)list'并進(jìn)行歸約,這里有兩種方式,直接&連接Reduce

df=pd.DataFrame({'AAA':[4,5,6,7],'BBB':[10,20,30,40],'CCC':[100,50,-30,-50]}) 

#method1:&直接連接標(biāo)準(zhǔn) 
Crit1=df.AAA <= 5.5 Crit2 = df.BBB == 10.0 Crit3 = df.CCC > -40.0 
allCrit=Crit1 & Crit2 & Crit3 
df[allCrit] 

#method2: Reduce 建立 
critList=[Crit1,Crit2,Crit3] 
allCrit=functools.reduce(lambda x,y:x&y,critList) 
df[allCrit] 
# 效果完全相同 
AAA BBB CCC
0 4 10 100

tips:讀者如果對(duì)reduce函數(shù)有疑問(wèn),可以百度“廖雪峰” 查看python基礎(chǔ)語(yǔ)法教程中map和reduce函數(shù)的基礎(chǔ)用法。
這里推薦python初學(xué)者認(rèn)真學(xué)習(xí)廖雪峰教程 ,基礎(chǔ)語(yǔ)法不甚解直接來(lái)學(xué)習(xí)pandas,很多時(shí)候會(huì)有一頭霧水的感覺。

第三講完畢

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容