在 Pandas DataFrame 中使用 isin() 函式
Samreena Aslam
2023年1月30日
-
使用
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