DataFrame中元素的操作

學(xué)了一段時(shí)間的pandas,結(jié)果每次想對(duì)其中的某個(gè)元素進(jìn)行條件選擇替換值的時(shí)候都會(huì)遇到困難。一開始想到的是用for循環(huán),但是這樣做感覺很丑一點(diǎn)都不美感,并且當(dāng)遇到數(shù)字索引和重復(fù)索引時(shí)就不能用了。

例子:有一個(gè)矩陣,要把其中非0的元素轉(zhuǎn)換為1,其余為0。(在做虛擬變量的模型時(shí)會(huì)用到)

矩陣如下

a矩陣

第一種方法:之間用for循環(huán)遍歷a中的每個(gè)元素,感覺這種方法很不美觀,而且還會(huì)覆蓋原數(shù)據(jù)。

for循環(huán)
結(jié)果

并且這樣做最大的缺點(diǎn)是當(dāng)索引是數(shù)字索引并且不是0,1,2這樣的順序排的,那么會(huì)出問題

由于元素不能確切指定,這種方法就失效了

第二種方法:用DataFrame的apply方法

numpy中where是一個(gè)矢量型的for循環(huán)(for是對(duì)應(yīng)標(biāo)量的),numpy中的where方法有這樣的功能。np.where(cond,x,y),其中cond,x,y是一個(gè)等長(zhǎng)的list,或者Series或者array都可以。當(dāng)cond為Trun返回對(duì)應(yīng)位置的x,否則返回對(duì)應(yīng)位置的y。最終np.where返回的也是一個(gè)等長(zhǎng)的array或者list吧(不太清楚類型)

構(gòu)造如下函數(shù),就能做出條件判斷并賦值了

轉(zhuǎn)換函數(shù)

以df1為例(上面提到的)選出元素為不為0的,那么元素零就成了Nan就好識(shí)別了,再用apply方法就行了

大功告成

并且不光是虛擬變量能用,有很多操作稍微變動(dòng)下就能做,以后遇到再寫吧。。

5.29更新

第三種方法:用Series的map方法,這時(shí)trans中的x是Series中的標(biāo)量,不是矢量。

同樣以df1中的數(shù)據(jù)為例,它的列索引是重復(fù) 的整數(shù)索引,要選取對(duì)應(yīng)列,需要用到iloc方法(基于位置的索引方法)

Series的map方法
最后編輯于
?著作權(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)容