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