Pandas:如何根据条件选择列
您可以使用以下方法按条件选择 pandas DataFrame 中的列:
方法一:选择至少有一行满足条件的列
#select columns where at least one row has a value greater than 2
df. loc [:, (df > 2 ). any ()]
方法二:选择所有行都满足条件的列
#select columns where all rows have a value greater than 2
df. loc [:, (df > 2 ). all ()]
方法三:选择至少有一行满足多个条件的列
#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:选择至少有一行满足条件的列
我们可以使用以下代码从 DataFrame 中选择列,其中该列中至少有一行的值大于 2:
#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。
示例2:选择所有行都满足条件的列
我们可以使用以下代码从 DataFrame 中选择列,其中列中每一行的值都大于 2:
#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
请注意,仅返回apples列,因为它是唯一一个该列中每行的值都大于 2 的列。
示例 3:选择至少一行满足多个条件的列
我们可以使用以下代码从 DataFrame 中选择列,其中该列中至少有一行的值在 10 到 15 之间:
#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
请注意,仅返回“bananas”列,因为它是唯一一个该列中至少有一行的值在 10 到 15 之间的列。
其他资源
以下教程解释了如何在 pandas 中执行其他常见操作: