Pandas: リスト内の値に基づいて行をフィルターする方法
次の基本構文を使用して、リスト内の値を含む pandas DataFrame 内の行をフィルターできます。
df[df[' team ']. isin ([' A ',' B ',' D '])]
この特定の例では、 Team列が値A 、 B 、またはDに等しい行のみを含むように DataFrame をフィルター処理します。
次の例は、この構文を実際に使用する方法を示しています。
例: リスト値に基づいて Pandas DataFrame をフィルタリングします。
さまざまなバスケットボール選手に関する情報を含む次のパンダ データフレームがあるとします。
import pandas as pd #createDataFrame df = pd. DataFrame ({' team ': ['A', 'A', 'B', 'B', 'C', 'C', 'D', 'D'], ' points ': [18, 22, 19, 14, 14, 11, 20, 28], ' assists ': [5, 7, 7, 9, 12, 9, 9, 4], ' rebounds ': [11, 8, 10, 6, 6, 5, 9, 12]}) #view DataFrame print (df) team points assists rebounds 0 A 18 5 11 1 to 22 7 8 2 B 19 7 10 3 B 14 9 6 4 C 14 12 6 5 C 11 9 5 6 D 20 9 9 7 D 28 4 12
次に、チーム列の値がA 、 B 、またはDに等しい行のみを含むように DataFrame をフィルターするとします。
これを行うには、次の構文を使用できます。
#filter for rows where team is equal to 'A', 'B' or 'D' df[df[' team ']. isin ([' A ',' B ',' D '])] team points assists rebounds 0 A 18 5 11 1 to 22 7 8 2 B 19 7 10 3 B 14 9 6 6 D 20 9 9 7 D 28 4 12
フィルター処理された DataFrame には、 Team列の値がA 、 B 、またはDに等しい行のみが含まれることに注意してください。
isin()関数を使用して数値でフィルタリングできることにも注意してください。
たとえば、次のコードを使用して、 Assists列が5または9に等しい行をフィルタリングできます。
#filter for rows where assists is equal to 5 or 9 df[df[' assists ']. isin ([ 5,9 ] )] team points assists rebounds 0 A 18 5 11 3 B 14 9 6 5 C 11 9 5 6 D 20 9 9
フィルター処理された DataFrame には、 Assists列の値が5または9である行のみが含まれることに注意してください。
注: pandas isin()関数の完全なドキュメントはここで見つけることができます。
追加リソース
次のチュートリアルでは、パンダで他の一般的なタスクを実行する方法を説明します。
パンダ: ピボット テーブルにフィルターを追加する方法
パンダ: 「次の内容を含まない」をフィルタリングする方法
パンダ: 特定の文字列を含む行をフィルターする方法