Pandas:如何根据列值选择行
您可以使用以下任何方法根据列值选择 pandas DataFrame 中的行:
方法 1:选择列等于特定值的行
df. loc [df[' col1 '] == value]
方法 2:选择在值列表中找到列值的行
df. loc [df[' col1 ']. isin ([value1, value2, value3, ...])]
方法三:根据多列条件选择行
df. loc [(df[' col1 '] == value) & (df[' col2 '] < value)]
以下示例展示了如何将每种方法与以下 pandas DataFrame 一起使用:
import pandas as pd
#createDataFrame
df = pd. DataFrame ({' team ': ['A', 'A', 'B', 'B', 'B', 'C', 'C', 'C'],
' points ': [5, 7, 7, 9, 12, 9, 9, 4],
' rebounds ': [11, 8, 10, 6, 6, 5, 9, 12],
' blocks ': [4, 7, 7, 6, 5, 8, 9, 10]})
#view DataFrame
df
team points rebound blocks
0 A 5 11 4
1 To 7 8 7
2 B 7 10 7
3 B 9 6 6
4 B 12 6 5
5 C 9 5 8
6 C 9 9 9
7 C 4 12 10
方法 1:选择列等于特定值的行
以下代码显示如何选择 DataFrame 中“points”列等于 7 的每一行:
#select rows where 'points' column is equal to 7
df. loc [df[' points '] == 7]
team points rebound blocks
1 To 7 8 7
2 B 7 10 7
方法 2:选择在值列表中找到列值的行
以下代码显示如何选择 DataFrame 中“points”列等于 7、9 或 12 的每一行:
#select rows where 'points' column is equal to 7
df. loc [df[' points ']. isin ([7, 9, 12])]
team points rebound blocks
1 To 7 8 7
2 B 7 10 7
3 B 9 6 6
4 B 12 6 5
5 C 9 5 8
6 C 9 9 9
方法三:根据多列条件选择行
以下代码显示如何选择 DataFrame 中“team”列等于“B”且“points”列大于 8 的每一行:
#select rows where 'team' is equal to 'B' and points is greater than 8
df. loc [(df[' team '] == ' B ') & (df[' points '] > 8)]
team points rebound blocks
3 B 9 6 6
4 B 12 6 5
请注意,仅返回 team 等于“B”且“points”大于 8 的两行。
其他资源
以下教程解释了如何在 pandas 中执行其他常见操作: