pandas is in和not in的使用說明

2022-10-04 13:00:21 字數 3065 閱讀 6704

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...