如何使用 pandas loc 根据多个条件选择行


您可以使用以下方法根据多种条件从 pandas DataFrame 中选择行:

方法一:选择满足多个条件的行

 df. loc [((df[' col1 '] == ' A ') & (df[' col2' ] == ' G '))]

方法 2:选择满足多个条件之一的行

 df. loc [((df[' col1 '] > 10) | (df[' col2' ] < 8))]

以下示例展示了如何在实践中通过以下 pandas DataFrame 使用这些方法:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' team ': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'],
                   ' position ': ['G', 'G', 'F', 'F', 'G', 'G', 'F', 'F'],
                   ' assists ': [5, 7, 7, 9, 12, 9, 9, 4],
                   ' rebounds ': [11, 8, 10, 6, 6, 5, 9, 12]})

#view DataFrame
df

	team position assists rebounds
0 A G 5 11
1 A G 7 8
2 A F 7 10
3 A F 9 6
4 B G 12 6
5 B G 9 5
6 B F 9 9
7 B F 4 12

方法一:选择满足多个条件的行

以下代码显示如何从 DataFrame 中仅选择团队等于“A”且位置等于“G”的行:

 #select rows where team is equal to 'A' and position is equal to 'G'
df. loc [((df[' team '] == ' A ') & (df[' position '] == ' G '))]

	team position assists rebounds
0 A G 5 11
1 A G 7 8

DataFrame 中只有两行满足这两个条件。

方法 2:选择满足多个条件之一的行

以下代码显示了如何仅选择 DataFrame 中助攻数大于 10篮板数小于 8 的行:

 #select rows where assists is greater than 10 or rebounds is less than 8
df. loc [((df[' assists '] > 10) | (df[' rebounds '] < 8))]

	team position assists rebounds
3 A F 9 6
4 B G 12 6
5 B G 9 5

DataFrame 中只有三行满足这两个条件。

注意:在这两个示例中,我们根据两个条件过滤行,但使用 & 和|属性。运算符,我们可以根据需要过滤任意数量的条件。

其他资源

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

如何根据 Pandas 中的条件创建新列
如何删除 Pandas 中包含特定值的行
如何删除 Pandas 中的重复行

添加评论

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