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 中执行其他常见操作:

如何在 Pandas 中按名称选择列
如何在 Pandas 中按索引选择列
如何在 Pandas 中选择包含特定字符串的列

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注