bool 取反_dataframe根据bool值高效地进行多重条件筛选的
pandas的數(shù)據(jù)篩選功能很強(qiáng)大,可以看下面的例子
要篩選a列小于3的數(shù)據(jù),只要
如果我們想篩選a列大于1,且小于3的數(shù)據(jù),用1<df['a']<3可以嗎?很遺憾,這樣是會(huì)報(bào)錯(cuò)的。
ValueErrordf['a']<3到底是何方神圣,打印出來瞧瞧。
方案一:for循環(huán)生成bool值列表
這樣可以完美使用連續(xù)的不等式,但是我們知道當(dāng)序列長(zhǎng)度很長(zhǎng)時(shí),對(duì)于dataframe來說,使用矢量化的操作效率會(huì)比單純的for循環(huán)更高。
方案二:位操作
我們知道,python的列表可以進(jìn)行位操作。那dataframe這個(gè)bool值序列可以類似操作嗎?
因?yàn)槲慌c操作優(yōu)先級(jí)比大于號(hào),小于號(hào)要高,所以表達(dá)式要括號(hào)括起來。我們發(fā)現(xiàn):第三個(gè)式子剛好是前兩個(gè)式子位與操作的結(jié)果??匆幌侣?lián)合表達(dá)式對(duì)df的作用效果,剛好就是a列大于1小于3的篩選結(jié)果。
我們對(duì)兩種方案進(jìn)行對(duì)比df的長(zhǎng)度擴(kuò)充到10000.
結(jié)論:位操作在數(shù)據(jù)序列足夠長(zhǎng)時(shí)效率明顯優(yōu)于for循環(huán)。
延伸:
或操作:
dataframe還支持非操作,對(duì)bool值序列取反:
總結(jié)
以上是生活随笔為你收集整理的bool 取反_dataframe根据bool值高效地进行多重条件筛选的的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 用户自定义一个异常,编程创建并抛出某个异
- 下一篇: java自定义异常怎么做