Pandas: 別の列に基づいて列値を抽出します
pandas でquery()関数を使用すると、ある列の値を別の列の値に基づいて抽出できます。
この関数は次の基本構文を使用します。
df. query (" team=='A' ")[" points "]
この特定の例では、チーム列が A に等しいポイント列から各値を抽出します。
次の例は、実際に次の pandas DataFrame でこの構文を使用する方法を示しています。
import pandas as pd #createDataFrame df = pd. DataFrame ({' team ': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'], ' position ': ['G', 'G', 'F', 'F', 'G', 'G', 'F', 'F'], ' points ': [11, 28, 10, 26, 6, 25, 29, 12]}) #view DataFrame print (df) team position points 0 AG 11 1 AG 28 2 AF10 3AF 26 4 BG 6 5 BG 25 6 BF 29 7 BF 12
例 1: 満たされた条件に基づいて列の値を抽出する
次のコードは、チーム列の値が「A」に等しいポイント列から各値を抽出する方法を示しています。
#extract each value in points column where team is equal to 'A' df. query (" team=='A' ")[" points "] 0 11 1 28 2 10 3 26 Name: points, dtype: int64
この関数は、チーム列の対応する値が「A」に等しいポイント列の 4 つの値を返します。
例 2: 満たされた多くの条件の 1 つに基づいて列の値を抽出する
次のコードは、チーム列の値が「A」に等しいか、ポジション列の値が「G」に等しいポイント列から各値を抽出する方法を示しています。
#extract each value in points column where team is 'A' or position is 'G' df. query (" team=='A' | position=='G' ")[" points "] 0 11 1 28 2 10 3 26 4 6 5 25 Name: points, dtype: int64
この関数は、チーム列の対応する値が「A」に等しいか、ポジション列の値が「G」に等しい、ポイント列の 6 つの値を返します。
例 3: 満たされた複数の条件に基づいて列の値を抽出する
次のコードは、チーム列の値が「A」に等しく、ポジション列の値が「G」に等しいポイント列から各値を抽出する方法を示しています。
#extract each value in points column where team is 'A' and position is 'G' df. query (" team=='A' & position=='G' ")[" points "] 0 11 1 28 Name: points, dtype: int64
この関数は、チーム列の対応する値が「A」に等しく、ポジション列の値が「G」に等しい、ポイント列の 2 つの値を返します。
追加リソース
次のチュートリアルでは、パンダで他の一般的なタスクを実行する方法を説明します。
パンダ: 条件に基づいて列を選択する方法
Pandas: 複数の条件に基づいて行を削除します
Pandas: 別の DataFrame に基づいて列の値を更新します