在 Pandas DataFrame 中使用 isin() 函数
Samreena Aslam
2023年1月30日
2022年5月16日
-
使用
isin()
函数从 Pandas 中的字典对象创建 DataFrame -
使用
isin()
函数过滤 Pandas DataFrame -
使用
isin()
方法过滤 Pandas DataFrame 中的多个列 -
使用带有
Not (~)
匹配条件的isin()
方法来过滤 Pandas DataFrame
我们将在本教程中讨论如何使用 like SQL IN
和 Not IN
运算符来过滤 pandas DataFrame
。此外,我们还将通过各种示例向你展示如何使用 isin()
函数和一元运算符(~)
根据条件过滤单行/列、过滤多列、过滤 pandasDataFrame
.
使用 isin()
函数从 Pandas 中的字典对象创建 DataFrame
下面的示例 DataFrame 包含列 Student Name
、Subject
、Semester
、Marks
。导入 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 Design
和 Web 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 Development
和 Web Design
主题返回。
我们可以通过使用 Pandas DataFrame 行索引显示 true
和 false
来返回一个布尔数组。
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 Design
和 Ethics
主题的行。
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