在Pandas中用多个过滤器选择行
在这篇文章中,我们将使用pandas中的多个过滤器来选择行。我们将在pandas中使用多个条件、逻辑运算符和loc()函数来选择多条记录。
用逻辑运算符即AND和OR来选择行,可以很容易地通过>, <,<=, >=和==的</=,>组合<=, >来提取有多个过滤器的行。loc()主要基于标签,但也可以与布尔数组一起使用,通过标签或布尔数组访问一组行和列。
Dataset Used:
创建一个带有姓名、班级、英语成绩、数学成绩和历史成绩等列的数据框架。我们将使用下面的数据集进行所有操作。
import pandas as pd
# initialize list of lists
data = [['John', 8, 7, 6, 5], ['Paul', 8, 3, 6, 4],
['Juli', 9, 10, 9, 9], ['Geeta', 9, 5, 4, 4]]
# Create the pandas DataFrame
df = pd.DataFrame(
data, columns=['Name', 'Class', 'English',
'Maths', 'History'])
# print dataframe.
print(df)
输出

以下是实现用多个过滤器选择行的各种操作:
- 选择分数为英语大于6分和分数为数学大于8分的学生行。
df1 = df[(df.English>6) & (df.Maths>8)]
print(df1)
输出:

- 选择英语成绩大于等于5分或历史成绩大于7分的学生的行。
df1 = df[(df.English>=5) | (df.History>7)]
print(df1)
输出

- 选择九年级学生中英语成绩大于等于5分或历史成绩大于7分的行。
df1 = df[(df.Class == 9) & ((df.English>=5) | (df.History>7))]
print(df1)
输出:

- 选择英语分数小于等于5分,数学分数小于等于5分,历史分数小于等于5分的学生行。
df1 = df[(df.English<=5) & (df.Maths<=5) & (df.History<=5)]
print(df1)
输出:

- 选择英语成绩小于等于5分或数学成绩大于5分或历史成绩小于等于5分的8年级学生的行。
df1 = df[(df.Class == 8) & ((df.English<=5) | (df.Maths>5) | (df.History<=5))]
print(df1)
输出:

- 用loc()选择英语成绩大于6分和数学成绩大于6分的行。
df1 = df.loc[(df['English']>6) & (df['Maths']>6)]
print(df1)
输出:

- 用loc()选择学生的英语分数大于6分或数学分数大于4分的行,我们只显示有姓名和班级的列。
df1 = df.loc[((df['English']>6) | (df['Maths']>4)),['Name','Class']]
print(df1)
输出:

极客教程