Pandas:使用布尔系列从 dataframe 中选择行


您可以使用以下基本语法根据布尔系列的值在 pandas DataFrame 中选择行:

 #define boolean series
bools = pd. Series ([ True , False , True , True , False , False , False , True ])

#select rows in DataFrame based on values in boolean series
df[bools. values ]

这允许您选择 pandas DataFrame 中布尔系列中相应值为True的每一行。

以下示例展示了如何在实践中使用此语法。

示例:使用布尔系列选择 Pandas DataFrame 中的行

假设我们有以下 pandas DataFrame,其中包含有关各种篮球运动员的信息:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' team ': ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H'],
                   ' points ': [18, 22, 19, 14, 14, 11, 20, 28],
                   ' assists ': [5, 7, 7, 9, 12, 9, 9, 4],
                   ' rebounds ': [11, 8, 10, 6, 6, 5, 9, 12]})

#view DataFrame
print (df)

  team points assists rebounds
0 A 18 5 11
1 B 22 7 8
2 C 19 7 10
3 D 14 9 6
4 E 14 12 6
5 F 11 9 5
6 G 20 9 9
7:28 4 12

我们可以使用以下语法来选择 DataFrame 中布尔系列中相应值为True的所有行:

 #define boolean series
bools = pd. Series ([ True , False , True , True , False , False , False , True ])

#select rows in DataFrame based on values in boolean series
df[bools. values ]

     team points assists rebounds
0 A 18 5 11
2 C 19 7 10
3 D 14 9 6
7:28 4 12

请注意,返回的唯一行是布尔系列中相应值为True的行。

另请注意,您可以使用以下语法仅选择 DataFrame 的“points”列中布尔系列中相应值为True的行。

 #define boolean series
bools = pd. Series ([ True , False , True , True , False , False , False , True ])

#select rows in points column based on values in boolean series
df[' points '][bools. values ]

0 18
2 19
3 14
7 28
Name: points, dtype: int64

请注意,“points”列返回的唯一行是布尔系列中相应值为True的行。

其他资源

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

如何根据 Pandas 中的字符串长度过滤行
如何在 Pandas 中选择没有 NaN 值的行
如何在 Pandas 中根据列值选择行

添加评论

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