Pandas知識(shí)點(diǎn)-equals()與==的區(qū)別
共
1510字,需瀏覽
4分鐘
·
2021-05-21 18:55

在Pandas中,equals()方法用于驗(yàn)證數(shù)據(jù)是否等效。
==和eq()方法可以用于比較Pandas中的數(shù)據(jù),那equals()和它們有什么區(qū)別呢?本文會(huì)進(jìn)行介紹。
一、返回值不同

equals()方法的返回值是一個(gè)布爾值。如果兩個(gè)被比較數(shù)據(jù)中的所有元素都相同,則equals()返回True,否則返回False。
==比較兩個(gè)DataFrame時(shí),結(jié)果是一個(gè)由布爾值構(gòu)成的DataFrame,比較兩個(gè)Series時(shí),結(jié)果是一個(gè)由布爾值構(gòu)成的Series。

equals()的返回值相當(dāng)于用numpy中的all()函數(shù)對(duì)==的結(jié)果再做一次判斷。
不過(guò),因?yàn)閑quals()和==的內(nèi)部判斷是有差異的,所以equals()與np.all(df1==df2)并不完全等價(jià),可以繼續(xù)看下面的介紹。

equals()比較兩個(gè)DataFrame或Series,索引值相等的列或行可以進(jìn)行比較,如索引1和1.0分別是整數(shù)和浮點(diǎn)數(shù),但值是相等的,對(duì)應(yīng)的行或列可以進(jìn)行比較。

==比較兩個(gè)DataFrame或Series,索引值相等時(shí)也可以進(jìn)行比較,不過(guò)結(jié)果的索引會(huì)有變化,取決于比較的順序。具體來(lái)說(shuō),比較結(jié)果的索引與==左邊的DataFrame或Series相同。而使用eq()方法時(shí),比較結(jié)果的索引與調(diào)用eq()的DataFrame或Series相同。
三、對(duì)空值的判斷結(jié)果不同

equals()比較時(shí),DataFrame或Series中的空值可以判斷為相等。具體來(lái)說(shuō),兩個(gè)np.NaN,兩個(gè)None,兩個(gè)pd.NaT,np.NaN與None這四種情況的比較結(jié)果都是相等的。而pd.NaT與np.NaN和None的比較結(jié)果為不相等。
==比較時(shí),空值的比較結(jié)果都是不相等。

從Python解釋器層面來(lái)判斷,兩個(gè)np.NaN和兩個(gè)pd.NaT的比較結(jié)果都不相等,所以用==比較時(shí),DataFrame中對(duì)應(yīng)位置的結(jié)果為False。兩個(gè)None的比較結(jié)果雖然相等,但因?yàn)樵诘腄ataFrame中None表示的是np.NaN,所以比較結(jié)果也為False。np.NaN和None比較也一樣,結(jié)果為False。這也是前面說(shuō)equals()與np.all(df1==df2)不完全等價(jià)的原因。
在判斷兩個(gè)DataFrame或Series是否等效時(shí),空值對(duì)我們來(lái)說(shuō)都是一樣的。我們期望的結(jié)果是將空值判斷為相等,這樣可以避免空值對(duì)其他數(shù)據(jù)比較結(jié)果的干擾。equals()用于判斷兩個(gè)數(shù)據(jù)是否等效,剛好可以用于這樣的場(chǎng)景。當(dāng)然,也可以先將空值替換成其他值后再比較,那就是另一種方式了。
四、與array的比較不同

equals()比較DataFrame和array時(shí),即使DataFrame與array的形狀相同,數(shù)據(jù)也完全相同,比較結(jié)果也是False。原因是array沒(méi)有索引,而equals()支持傳入的參數(shù)是DataFrame或Series,不支持array。
==可以將DataFrame與array進(jìn)行比較,比較結(jié)果為DataFrame。
以上就是Pandas中equals()與==的區(qū)別介紹,如果需要本文代碼,可以點(diǎn)擊關(guān)注公眾號(hào)“Python碎片”,然后在后臺(tái)回復(fù)“pandas11”關(guān)鍵字獲取完整代碼。
瀏覽
72
日韩欧美肏屄高清视频
|
一级片黄色片视频
|
无码伦理一区二区三区
|
视频无码在线
|
操操操操操操操操操骚逼网
|