如何使用布尔列过滤 pandas dataframe


您可以使用以下方法根据布尔列值过滤 pandas DataFrame 中的行:

方法1:根据布尔列过滤DataFrame

 #filter for rows where value in 'my_column' is True
df. loc [df. my_column ]

方法2:根据多个布尔列过滤DataFrame

 #filter for rows where value in 'column1' or 'column2' is True
df. loc [df. column1 | df. column2 ]

以下示例展示了如何在实践中使用以下 pandas DataFrame 的每种方法:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' team ': ['A', 'B', 'C', 'D', 'E', 'F', 'G'],
                   ' points ': [18,20, 25, 40, 34, 32, 19],
                   ' all_star ': [True, False, True, True, True, False, False],
                   ' starter ': [False, True, True, True, False, False, False]})

#view DataFrame
print (df)

  team points all_star starter
0 A 18 True False
1 B 20 False True
2 C 25 True True
3 D 40 True True
4 E 34 True False
5 F 32 False False
6 G 19 False False

示例 1:根据布尔列过滤 DataFrame

我们可以使用以下语法来过滤 pandas DataFrame 以仅包含all_star列中的值为 True 的行:

 #filter for rows where 'all_star' is True
df. loc [df. all_star ]

	team points all_star starter
0 A 18 True False
2 C 25 True True
3 D 40 True True
4 E 34 True False

请注意,DataFrame 已被过滤为仅包含all_star列中值为 True 的行。

如果您想过滤all_star为 False 的行,只需在列名前面键入波形符 ( ~ ):

 #filter for rows where 'all_star' is False
df. loc [ ~ df. all_star ]

        team points all_star starter
1 B 20 False True
5 F 32 False False
6 G 19 False False

DataFrame 现在已被过滤为仅包含all_star列中值为 False 的行。

示例 2:根据多个布尔列过滤 DataFrame

我们可以使用以下语法来过滤 pandas DataFrame 以仅包含all_starstart列值为 True 的行:

 #filter for rows where 'all_star' or 'starter' is True
df. loc [df. all_star | df. starter ]

        team points all_star starter
0 A 18 True False
1 B 20 False True
2 C 25 True True
3 D 40 True True
4 E 34 True False

请注意,DataFrame 已被过滤为仅包含all_starstarter列中值为 True 的行。

如果要过滤all_starstarter列中值为 True行,可以使用&运算符而不是|操作员:

 #filter for rows where 'all_star' and 'starter' is True
df. loc [df. all_star & df. starter ]

	team points all_star starter
2 C 25 True True
3 D 40 True True

现在,DataFrame 已被过滤为仅包含all_starstarter列中的值为 True 的行。

相关: Pandas 中 loc 和 iloc 的区别

其他资源

以下教程解释了如何在 pandas 中执行其他常见任务:

Pandas:使用布尔系列从 DataFrame 中选择行
Pandas:如何根据条件创建布尔列
Pandas:如何将布尔值转换为整数值

添加评论

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