Pandas で「not in」フィルターを使用する方法 (例あり)


次の構文を使用して、pandas DataFrame で「NOT IN」フィルターを実行できます。

 df[ ~ df[' col_name ']. isin (values_list)]

Values_listの値は数値または文字値であることに注意してください。

次の例は、この構文を実際に使用する方法を示しています。

例 1: 列で「NON IN」フィルターを実行します。

次のコードは、名前のリストにチーム名が含まれていない行のパンダ データフレームをフィルターする方法を示しています。

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' team ': ['A', 'A', 'B', 'B', 'B', 'B', 'C', 'C'],
                   ' points ': [25, 12, 15, 14, 19, 23, 25, 29],
                   ' assists ': [5, 7, 7, 9, 12, 9, 9, 4],
                   ' rebounds ': [11, 8, 10, 6, 6, 5, 9, 12]})

#define list of teams we don't want
values_list = [' A ', ' B ']

#filter for rows where team name is not in list
df[ ~ df[' team ']. isin (values_list)]

        team points assists rebounds
6 C 25 9 9
7 C 29 4 12

次のコードは、「points」列に特定の値が含まれていない行の pandas DataFrame をフィルターする方法を示しています。

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' team ': ['A', 'A', 'B', 'B', 'B', 'B', 'C', 'C'],
                   ' points ': [25, 12, 15, 14, 19, 23, 25, 29],
                   ' assists ': [5, 7, 7, 9, 12, 9, 9, 4],
                   ' rebounds ': [11, 8, 10, 6, 6, 5, 9, 12]})

#define list of values we don't want
values_list = [12, 15, 25]

#filter for rows where team name is not in list
df[ ~ df[' team ']. isin (values_list)]

	team points assists rebounds
3 B 14 9 6
4 B 19 12 6
5 B 23 9 5
7 C 29 4 12

例 2: 複数の列で「NON IN」フィルターを実行する

次のコードは、特定のチーム名が複数の列の 1 つに含まれていない行の pandas DataFrame をフィルターする方法を示しています。

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' star_team ': ['A', 'A', 'B', 'B', 'B', 'B', 'C', 'C'],
                   ' backup_team ': ['B', 'B', 'C', 'C', 'D', 'D', 'D', 'E'],
                   ' points ': [25, 12, 15, 14, 19, 23, 25, 29],
                   ' assists ': [5, 7, 7, 9, 12, 9, 9, 4],
                   ' rebounds ': [11, 8, 10, 6, 6, 5, 9, 12]})

#define list of teams we don't want
values_list = [' C ', ' E ']

#filter for rows where team name is not in one of several columns
df[ ~ df[[' star_team ', ' backup_team ']]. isin (values_list). any (axis= 1 )] 

        star_team backup_team points assists rebounds
0 A B 25 5 11
1 A B 12 7 8
4 B D 19 12 6
5 B D 23 9 5

「star_team」列または「backup_team」列に「C」または「E」チームが表示されるすべての行をフィルタリングしたことに注意してください。

追加リソース

次のチュートリアルでは、パンダで他の一般的なフィルタリング操作を実行する方法について説明します。

パンダで「Is Not Null」を使用する方法
Pandas DataFrame を列値でフィルタリングする方法
Pandas DataFrame 行を日付でフィルターする方法
複数の条件で Pandas DataFrame をフィルタリングする方法

コメントを追加する

メールアドレスが公開されることはありません。 が付いている欄は必須項目です