パンダ: 「含まれない」項目をフィルタリングするにはどうすればよいですか?
次のメソッドを使用して、pandas DataFrame で「Does Not Contain」フィルターを実行できます。
方法 1: 特定の文字列を含まない行をフィルターする
filtered_df = df[df[' my_column ']. str . contains (' some_string ') == False ]
方法 2: 複数の特定の文字列のいずれかを含まない行をフィルターする
filtered_df = df[df[' my_column ']. str . contains (' string1|string2|string3 ') == False ]
次の例は、次の pandas DataFrame で各メソッドを実際に使用する方法を示しています。
import pandas as pd #createDataFrame df = pd. DataFrame ({' team ': ['Nets', 'Rockets', 'Mavs', 'Spurs', 'Kings', 'Nuggets'], ' points ': [18, 22, 19, 14, 14, 11], ' assists ': [5, 7, 7, 9, 12, 9], ' rebounds ': [11, 8, 10, 6, 6, 5]}) #view DataFrame print (df) team points assists rebounds 0 Nets 18 5 11 1 Rockets 22 7 8 2 Mavs 19 7 10 3 Spurs 14 9 6 4 Kings 14 12 6 5 Nuggets 11 9 5
例 1: 特定の文字列を含まない行をフィルターする
次のコードは、チーム列の名前に「ets」が含まれていない行のパンダ データフレームをフィルターする方法を示しています。
#filter for rows that do not contain 'ets' in the 'team' column
filtered_df = df[df[' team ']. str . contains (' ets ') == False ]
#view filtered DataFrame
print (filtered_df)
team points assists rebounds
2 Mavs 19 7 10
3 Spurs 14 9 6
4 Kings 14 12 6
結果のデータフレームには、チーム列の値の名前に「ets」が含まれる行が含まれないことに注意してください。
特に、次のチームは DataFrame から除外されました。
- ネット
- ロケット
- ナゲット
これらのチーム名にはそれぞれ「ets」が含まれていることに注意してください。
例 2: 複数の特定の文字列のいずれかを含まない行をフィルターする
次のコードは、チーム列の名前に「ets」が含まれていない行のパンダ データフレームをフィルターする方法を示しています。
#filter for rows that do not contain 'ets' or 'urs' in the 'team' column
filtered_df = df[df[' team ']. str . contains (' ets|urs ') == False ]
#view filtered DataFrame
print (filtered_df)
team points assists rebounds
2 Mavs 19 7 10
4 Kings 14 12 6
結果のデータフレームには、チーム列の値の名前に「ets」または「urs」が含まれる行は含まれないことに注意してください。
注: |演算子はパンダでは「OR」を意味します。
追加リソース
次のチュートリアルでは、パンダで他の一般的なフィルタリング操作を実行する方法について説明します。
Pandas DataFrame を列値でフィルタリングする方法
Pandas DataFrame 行を日付でフィルターする方法
複数の条件で Pandas DataFrame をフィルタリングする方法