pandas按條件篩選資料時,除了使用query()方法,還可以使用isin和對isin取反進行條件篩選.
import pandas as pd
df = pd.dataframe()
filter_condition =
df_in = df[df.isin(filter_condition)['a']]
df_notin = df[~df.isin(filter_condition)['a']]
df.isin(filter_condition)
a b c
0 true true false
1 true true false
2 true false false
3 false false false
4 false false false
5 false false false
pandas使用isin時,返回dataframe中儲存的資料為是否滿足篩選條件的boolean,可以通過boolean對dataframe對資料進行篩選。
補充:pandas中isin()函式及其逆函式使用
我使用這個函式就是用來清洗資料,刪選過濾掉dataframe中一些行。
這裡你需要知道dateframe中布林索引這個東西,可以用滿足布林條件的列值來過濾資料,如下
>>> df=pd.dataframe(np.random.randn(4,4),columns=['a','b','c','d'])
>>> df
a b c d
0 -0.018330 2.093506 -0.086293 -2.150479
1 0.104931 -0.271810 -0.054599 0.361612
2 0.590216 0.218049 0.157213 0.643540
3 -0.254449 -0.593278 -0.150455 -0.244485
>>> df.a>0#布林索引
0 false
1 true
2 true
3 false
name: a, dtype: bool
#布林索引應用
>>> df[df.a>0]
a b c d
1 0.104931 -0.271810 -0.054599 0.361612
2 0.590216 0.218049 0.157213 0.643540
www.cppcns.com>>>
新增一列e
>>> df['e']=['a','a','c','b']
>>> df
a b c d e
0 -0.018330 2.093506 -0.086293 -2.150479 a
1 0.104931 -0.271810 -0.054599 0.361612 a
2 0.590216 0.218049 0.157213 0.pzhpdcx643540 c
3 -0.254449 -0.593278 -0.150455 -0.244485 b
>>> df.e.isin(['a','c'])
0 true
1 true
2 true
3 false
name: e, dtype: bool
>>> df.isin(['','c'])#整個df也同樣適用
a b c d e
0 false false false false false
1 false false false false false
2 false false false false true
3 false false false false true
#>> df[df.e.isin(['a','c'])]
a b c d e
0 -0.018330 2.093506 -0.086293 -2.150479 a
1 0.104931 -0.271810 -0.054599 0.361612 a
2 0.590216 0.218049 0.157213 0.643540 c
>>>
isin()接受乙個列表,判斷該列中元素是否在列表中。
同時對多個列過濾,可以如下使用
df[df[某列].isin(條件)&df[某列].isin(條件)]
#>> df.d=[0,1,0,2]
>>> df[df.e.isin(['a','d'])&df.d.isin([0,])]
a b c d e
0 -0.01833 2.093506 -0.086293 0 a
也可以不推薦,你試一下就知道
df.isin()
#>> df.d=[0,1,0,2]
>>> df
a b c d e
0 -0.018330 2.093506 -0.086293 0 a
1 0.104931 -0.271810 -0.054599 1 a
2 0.590216 0.218049 0.157213 0 c
3 -0.254449 -0.593278 -0.150455 2 b
>>> df[df.isin()]
a b c d e
0 nan nan nan 0.0 a
1 nan nan nan nan a
2 nan nan nan 0.0 nan
3 nan nan nan nan nan
#沒錯這不適合選出一行
>>> df.isin()
a b c 程式設計客棧 d e
0 false false false true true
1 false false false false true
2 false false false true false
3 false false false false false
告訴你沒有isnotin,它的反函式就是在前面加上 ~ ,其他用法同上。
本文標題: pandas is in和not in的使用說明
本文位址:
和 區別和聯絡, 和 區別和聯絡
和 區別和聯絡,和 區別和聯絡,實際專案中,什麼情況用哪種?首先,和 的聯絡 共同點 和 都可以用作 邏輯與 運算子,都是雙目運算子。具體要看使用時的具體條件來決定。無論使用哪種運算子,對最終的運算結果都沒有影響。情況1 當上述的運算元是boolean型別變數時,和 都可以用作邏輯與運算子。情況2 ...
rpx和樣式和class和flex
5 style 靜態的樣式統一寫到 class 中。style 接收動態的樣式,在執行時會進行解析,請盡量避免將靜態的樣式寫進 style 中,以免影響渲染速度。例 6 class 用於指定樣式規則,其屬性值是樣式規則中類選擇器名 樣式類名 的集合,樣式類名不需要帶上.樣式類名之間用空格分隔。關於f...
if和switch和for語句
if和switch很像。具體什麼場景下,應用那個語句呢?如果判斷的具體數值不多,而是符合byte,short,int,char,字串。這五種型別。雖然兩個語句都可以使用,建議使用switch語句,因為效率稍高。其他情況,對區間判斷,對結果為boolean型別判斷,使用if,if的使用範圍更廣。whi...