在 Pandas DataFrame 中使用 isin() 函式
Samreena Aslam
2023年1月30日
Pandas
Pandas DataFrame
-
使用
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
Enjoying our tutorials? Subscribe to DelftStack on YouTube to support us in creating more high-quality video guides. Subscribe