在 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)
输出: