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

如何在 Pandas 中按索引选择行
如何在 Pandas 中选择单行
如何选择 Pandas 中任意列中出现值的行

添加评论

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