パンダ: 条件に基づいて列を選択する方法


次のメソッドを使用して、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で特定の文字列を含む列を選択する方法

コメントを追加する

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