
比較操作是很簡(jiǎn)單的基礎(chǔ)知識(shí),不過Pandas中的比較操作有一些特殊的點(diǎn),本文進(jìn)行介紹。
一、比較運(yùn)算符和比較方法
比較運(yùn)算符用于判斷是否相等和比較大小,Python中的比較運(yùn)算符有==、!=、<、>、<=、>=六個(gè),Pandas中也一樣。
在Pandas中,DataFrame和Series還支持6個(gè)比較方法,詳見下表。
對(duì)于比較操作,==和!=支持各種類型的數(shù)據(jù)互相比較,而<、>、<=、>=對(duì)數(shù)據(jù)類型有限制,如整數(shù)可以與浮點(diǎn)數(shù)比較大小,但整數(shù)不能與字符串比較大小,會(huì)報(bào)錯(cuò)。這一點(diǎn),適用于后面的所有比較。
二、兩個(gè)DataFrame比較
1. 用算術(shù)運(yùn)算符比較

兩個(gè)DataFrame進(jìn)行比較,是將DataFrame中對(duì)應(yīng)位置的數(shù)據(jù)進(jìn)行比較。
使用比較運(yùn)算符,兩個(gè)DataFrame的形狀必須相同,索引必須相同(索引順序也必須相同),否則會(huì)報(bào)錯(cuò)。
2. 用比較方法比較

直接用DataFrame調(diào)用比較方法,傳入另一個(gè)DataFrame,即可完成比較操作。

使用比較方法時(shí),兩個(gè)DataFrame的形狀可以不相同,索引也可以不相同。結(jié)果是能兼容兩個(gè)被比較DataFrame的新DataFrame,原理如下圖。

三、兩個(gè)Series比較
1. 用算術(shù)運(yùn)算符比較
使用比較運(yùn)算符,兩個(gè)Series的長(zhǎng)度必須相同,索引必須相等(索引順序也必須相同),否則會(huì)報(bào)錯(cuò)。
2. 用比較方法比較

使用比較方法,兩個(gè)Series的長(zhǎng)度可以不相同,索引也可以不相同。結(jié)果是能兼容兩個(gè)被比較Series的新Series,原理同DataFrame。
四、與數(shù)字或字符串比較
1. DataFrame與數(shù)字比較

用DataFrame中的每個(gè)數(shù)據(jù)都與數(shù)字進(jìn)行比較,返回對(duì)應(yīng)位置的布爾值,Series同理。比較方法和運(yùn)算符作用相同。
2. DataFrame與字符串比較

將每個(gè)數(shù)據(jù)都與指定的字符串進(jìn)行比較,Series同理。比較方法和運(yùn)算符作用相同。
用多維數(shù)據(jù)與單個(gè)數(shù)據(jù)進(jìn)行比較時(shí),要注意數(shù)據(jù)的類型,如果有不支持的比較,會(huì)報(bào)錯(cuò)。
五、與array進(jìn)行比較

比較操作還支持DataFrame或Series與numpy中的array數(shù)據(jù)進(jìn)行比較。array沒有索引,所以對(duì)索引沒有要求,但形狀必須相同,否則會(huì)報(bào)錯(cuò)。比較方法和運(yùn)算符作用相同。
以上就是Pandas中的比較操作介紹,如果需要本文代碼,可以點(diǎn)擊關(guān)注公眾號(hào)“Python碎片”,然后在后臺(tái)回復(fù)“pandas10”關(guān)鍵字獲取完整代碼。