在pandas中,isin()是一个非常重要的方法,它允许我们根据一个值列表来筛选数据
isin()方法基础
假设我们有一个DataFrame df,其中包含学生的信息:
import pandas as pd
# 创建一个示例DataFrame
data = {
'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],
'Subject': ['Math', 'Science', 'Math', 'History', 'Science'],
'Score': [90, 85, 92, 78, 88]
}
df = pd.DataFrame(data)
# 筛选Subject列为'Math'或'Science'的学生
selected_students = df[df['Subject'].isin(['Math', 'Science'])]
print(selected_students)
输出:
Name Subject Score
0 Alice Math 90
1 Bob Science 85
2 Charlie Math 92
4 Eve Science 88
示例2:结合多个条件筛选
isin()方法可以与其他条件筛选方法结合使用,以创建更复杂的筛选条件。
& :且
| :或
import pandas as pd
# 创建一个示例DataFrame
data = {
'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],
'Subject': ['Math', 'Science', 'Math', 'History', 'Science'],
'Score': [90, 85, 92, 78, 88]
}
df = pd.DataFrame(data)
# 筛选Score大于85且Subject为'Math'或'Science'的学生
combined_filter = df[(df['Score'] > 85) & df['Subject'].isin(['Math', 'Science'])]
print(combined_filter)
输出:
Name Subject Score
0 Alice Math 90
2 Charlie Math 92
4 Eve Science 88
高级用法与技巧
isin()方法不仅限于简单的值匹配,还可以与其他pandas功能结合使用,以实现更高级的数据筛选。
示例3:筛选DataFrame中多个列的值
我们可以同时检查多个列中的值是否存在于给定的列表中
& :且
| :或
import pandas as pd
# 创建一个示例DataFrame
data = {
'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],
'Subject': ['Math', 'Science', 'Math', 'History', 'Science'],
'Score': [90, 85, 92, 78, 88]
}
df = pd.DataFrame(data)
# 筛选Name为'Alice'或'Charlie',且Subject为'Math'或'Science'的学生
multi_column_filter = df[(df['Name'].isin(['Alice', 'Charlie']) & df['Subject'].isin(['Math', 'Science']))]
print(multi_column_filter)
输出:
Name Subject Score
0 Alice Math 90
2 Charlie Math 92
使用 “~”取反来获取数据
data = {
'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],
'Subject': ['Math', 'Science', 'Math', 'History', 'Science'],
'Score': [90, 85, 92, 78, 88]
}
df = pd.DataFrame(data)
# 筛选Name为不为'Alice'或'Charlie',且Subject为'Math'或'Science'的学生
multi_column_filter = df[(~df['Name'].isin(['Alice', 'Charlie']) & df['Subject'].isin(['Math', 'Science']))]
print(multi_column_filter)
结果:
Name Subject Score
1 Bob Science 85
4 Eve Science 88
示例4:结合set数据结构使用isin()
使用set数据结构可以更有效地执行isin()操作,尤其是当比较值列表非常大时
import pandas as pd
# 创建一个示例DataFrame
data = {
'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],
'Subject': ['Math', 'Science', 'Math', 'History', 'Science'],
'Score': [90, 85, 92, 78, 88]
}
df = pd.DataFrame(data)
# 将要匹配的值转换为set以提高效率
subjects_set = {'Math', 'Science'}
# 筛选Subject列为'Math'或'Science'的学生
set_filter = df[df['Subject'].isin(subjects_set)]
print(set_filter)
输出:
Name Subject Score
0 Alice Math 90
1 Bob Science 85
2 Charlie Math 92
4 Eve Science 88
2873

被折叠的 条评论
为什么被折叠?



