パンダ: 条件に基づいて列を選択する方法
次のメソッドを使用して、pandas DataFrame 内の列を条件によって選択できます。
方法 1: 条件を満たす行が 1 つ以上ある列を選択する
#select columns where at least one row has a value greater than 2
df. loc [:, (df > 2 ). any ()]
方法 2: すべての行が条件を満たす列を選択する
#select columns where all rows have a value greater than 2
df. loc [:, (df > 2 ). all ()]
方法 3: 複数の条件を満たす行が少なくとも 1 つある列を選択する
#select columns where at least one row has a value between 10 and 15
df. loc [:, ((df>= 10 ) & (df<= 15 )). any ()]
次の例は、次の pandas DataFrame で各メソッドを使用する方法を示しています。
import pandas as pd #createDataFrame df = pd. DataFrame ({' apples ': [7, 3, 3, 4, 3], ' oranges ': [2, 0, 2, 0, 1], ' bananas ': [5, 0, 4, 0, 12]}, index=[' Farm1 ',' Farm2 ',' Farm3 ',' Farm4 ',' Farm5 ']) #view DataFrame print (df) apples oranges bananas Farm1 7 2 5 Farm2 3 0 0 Farm3 3 2 4 Farm4 4 0 0 Farm5 3 1 12
例 1: 少なくとも 1 つの行が条件を満たす列を選択します。
次のコードを使用して、列内の少なくとも 1 つの行が 2 より大きい値を持つ列を DataFrame から選択できます。
#select columns where at least one row has a value greater than 2
df. loc [:, (df > 2 ). any ()]
apples bananas
Farm1 7 5
Farm2 3 0
Farm3 3 4
Farm4 0 0
Farm5 3 12
リンゴとバナナの列は両方とも返されることに注意してください。これらの列には 2 より大きい値を持つ行が少なくとも 1 つあるためです。
例 2: すべての行が条件を満たす列を選択する
次のコードを使用して、列の各行が 2 より大きい値を持つ列を DataFrame から選択できます。
#select columns where every row has a value greater than 2
df. loc [:, (df > 2 ). all ()]
apples
Farm1 7
Farm2 3
Farm3 3
Farm4 4
Farm5 3
列内の各行が 2 より大きい値を持つ唯一の列であるため、リンゴ列のみが返されることに注意してください。
例 3: 少なくとも 1 つの行が複数の条件を満たす列を選択する
次のコードを使用して、列内の少なくとも 1 つの行の値が 10 ~ 15 である列を DataFrame から選択できます。
#select columns where every row has a value greater than 2
df. loc [:, ((df>= 10 ) & (df<= 15 )). any ()]
bananas
Farm1 5
Farm2 0
Farm3 4
Farm4 0
Farm5 12
バナナ列のみが返されることに注意してください。バナナ列は、列内の少なくとも 1 行の値が 10 ~ 15 である唯一の列であるためです。
追加リソース
次のチュートリアルでは、パンダで他の一般的な操作を実行する方法を説明します。
Pandas で名前で列を選択する方法
Pandas でインデックスによって列を選択する方法
Pandasで特定の文字列を含む列を選択する方法