📜  在 Pandas 中选择具有多个过滤器的行

📅  最后修改于: 2022-05-13 01:54:28.445000             🧑  作者: Mango

在 Pandas 中选择具有多个过滤器的行

在本文中,我们将在 Pandas 中使用多个过滤器来选择行。我们将使用多个条件、逻辑运算符和使用loc()函数在 Pandas 中选择多行。

通过组合 >、<、<=、>= 和 == 可以轻松地使用逻辑运算符(即 AND 和 OR)选择行,以提取具有多个过滤器的行。 loc()主要基于标签,但也可以与布尔数组一起使用,以通过标签或布尔数组访问一组行和列。

使用的数据集:

创建一个包含名称、班级、英语分数、数学分数和历史分数列的数据框。我们将使用以下数据集进行所有操作:

Python
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)


Python
df1 = df[(df.English>6) & (df.Maths>8)]
print(df1)


Python
df1 = df[(df.English>=5) | (df.History>7)]
print(df1)


Python
df1 = df[(df.Class == 9) & ((df.English>=5) | (df.History>7))]
print(df1)


Python
df1 = df[(df.English<=5) & (df.Maths<=5) & (df.History<=5)]
print(df1)


Python
df1 = df[(df.Class == 8) & ((df.English<=5) | (df.Maths>5) | (df.History<=5))]
print(df1)


Python
df1 = df.loc[(df['English']>6) & (df['Maths']>6)]
print(df1)


Python
df1 = df.loc[((df['English']>6) | (df['Maths']>4)),['Name','Class']]
print(df1)


输出

以下是实现具有多个过滤器的行选择的各种操作:

  • 选择有分数的学生的行是英语大于 6,分数是数学大于 8。

Python

df1 = df[(df.English>6) & (df.Maths>8)]
print(df1)

输出:

  • 选择学生的英语分数大于等于 5 或分数大于 7 的行。

Python

df1 = df[(df.English>=5) | (df.History>7)]
print(df1)

输出

  • 选择 9 类学生的英语成绩大于等于 5 或分数大于 7 的行。

Python

df1 = df[(df.Class == 9) & ((df.English>=5) | (df.History>7))]
print(df1)

输出:

  • 选择学生英语分数小于 5 且数学分数小于 5 且历史分数小于 5 的行。

Python

df1 = df[(df.English<=5) & (df.Maths<=5) & (df.History<=5)]
print(df1)

输出:

  • 选择 8 类学生英语分数小于 5 或数学分数大于 5 或历史分数小于 5 的行。

Python

df1 = df[(df.Class == 8) & ((df.English<=5) | (df.Maths>5) | (df.History<=5))]
print(df1)

输出:

  • 使用loc()选择英语分数大于 6 且数学分数大于 6 的行。

Python

df1 = df.loc[(df['English']>6) & (df['Maths']>6)]
print(df1)

输出:

  • 使用loc()选择学生英语分数大于 6 或数学分数大于 4 的行。我们只显示带有姓名和班级的列。

Python

df1 = df.loc[((df['English']>6) | (df['Maths']>4)),['Name','Class']]
print(df1)

输出: