迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > Python >

在 Pandas DataFrame 中使用 isin() 函数

作者:迹忆客 最近更新:2024/04/21 浏览次数:

我们将在本教程中讨论如何使用 like SQL INNot IN 运算符来过滤 pandas DataFrame。此外,我们还将通过各种示例向你展示如何使用 isin() 函数和一元运算符(~) 根据条件过滤单行/列、过滤多列、过滤 pandasDataFrame .


使用 isin() 函数从 Pandas 中的字典对象创建 DataFrame

下面的示例 DataFrame 包含列 Student NameSubjectSemesterMarks。导入 pandas 库并创建一个 DataFrame。

import pandas as pd

student_record = {
    "Student Name": ["Samreena", "Affan", "Mirha", "Asif"],
    "Subject": ["SDA", "Ethics", "Web Design", "Web Development"],
    "Semester": ["6th", "7th", "5th", "8th"],
    "Marks": [100, 90, 80, 70],
}
index_labels = [0, 1, 2, 3]
df = pd.DataFrame(student_record, index=index_labels)
print(df)

输出:

   Student Name         Subject  Semester  Marks
0     Samreena              SDA      6th    100
1        Affan           Ethics      7th     90
2        Mirha       Web Design      5th     80
3         Asif  Web Development      8th     70

使用 isin() 函数过滤 Pandas DataFrame

我们可以使用类似于 SQL 中的 IN 运算符的 isin() 方法过滤 pandas DataFrame 行。

要过滤行,将检查单个列中的所需元素。使用 pd.series.isin() 函数,我们可以检查搜索元素是否存在于系列中。

如果元素将在系列中匹配,则返回 true,否则返回 false

例如,我们希望在 Subject 列中返回包含 Web DesignWeb Development 主题的行。

import pandas as pd

student_record = {
    "Name": ["Samreena", "Affan", "Mirha", "Asif"],
    "Subject": ["SDA", "Ethics", "Web Design", "Web Development"],
    "Semester": ["6th", "7th", "5th", "8th"],
    "Marks": [100, 90, 80, 70],
}
index_labels = [0, 1, 2, 3]
dataframe = pd.DataFrame(student_record, index=index_labels)
# Find elements in a Column to return rows
subjects_list = ["Web Design", "Web Development"]
dataframe1 = dataframe[dataframe.Subject.isin(subjects_list)]
print(dataframe1)

输出:

    Name          Subject   Semester  Marks
2   Mirha       Web Design      5th     80
3   Asif   Web Development      8th     70

请注意,仅显示那些学生姓名 Web DevelopmentWeb Design 主题返回。

我们可以通过使用 Pandas DataFrame 行索引显示 truefalse 来返回一个布尔数组。

import pandas as pd

student_record = {
    "Name": ["Samreena", "Affan", "Mirha", "Asif"],
    "Subject": ["SDA", "Ethics", "Web Design", "Web Development"],
    "Semester": ["6th", "7th", "5th", "8th"],
    "Marks": [100, 90, 80, 70],
}
index_labels = [0, 1, 2, 3]

dataframe = pd.DataFrame(student_record, index=index_labels)
subjects_list = ["Web Design", "Web Development"]
dataframe1 = dataframe.Subject.isin(subjects_list)
print(dataframe1)

输出:

0    False
1    False
2    True
3    True
Name: Subject, dtype: bool

使用 isin() 方法过滤 Pandas DataFrame 中的多个列

我们还可以使用 isin() 方法对多个列应用过滤器。例如,我们想要检索所有具有 SDA 主题或第五学期的行。

import pandas as pd

student_record = {
    "Name": ["Samreena", "Affan", "Mirha", "Asif"],
    "Subject": ["SDA", "Ethics", "Web Design", "Web Development"],
    "Semester": ["6th", "7th", "5th", "8th"],
    "Marks": [100, 90, 80, 70],
}
index_labels = [0, 1, 2, 3]
dataframe = pd.DataFrame(student_record, index=index_labels)
dataframe1 = dataframe[
    dataframe[["Subject", "Semester"]].isin(["SDA", "7th"]).any(axis=1)
]
print(dataframe1)

输出:

       Name  Subject  Semester  Marks
0   Samreena    SDA      6th    100
1     Affan  Ethics      7th     90

使用带有 Not (~) 匹配条件的 isin() 方法来过滤 Pandas DataFrame

isin() 方法的行为类似于 SQL 中的 IN 运算符。我们将使用一元运算符 (~) 来实现 Not IN 运算符。

例如,我们只想显示那些不包含 Web DesignEthics 主题的行。

import pandas as pd

student_record = {
    "Name": ["Samreena", "Affan", "Mirha", "Asif"],
    "Subject": ["SDA", "Ethics", "Web Design", "Web Development"],
    "Semester": ["6th", "7th", "5th", "8th"],
    "Marks": [100, 90, 80, 70],
}
index_labels = [0, 1, 2, 3]
dataframe = pd.DataFrame(student_record, index=index_labels)
subjects_list = ["Web Design", "Ethics"]

# Applying Not operator
dataframe1 = dataframe[~dataframe.Subject.isin(subjects_list)]
print(dataframe1)

输出:

       Name          Subject  Semester  Marks
0  Samreena              SDA      6th    100
3      Asif  Web Development      8th     70

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

在 Pandas 中加载 JSON 文件

发布时间:2024/04/21 浏览次数:97 分类:Python

本教程介绍了我们如何使用 pandas.read_json()方法将一个 JSON 文件加载到 Pandas DataFrame 中。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便