Pandas 如何获取在一个Dataframe中但不在另一个Dataframe中的行
在本文中,我们将介绍如何使用Pandas获取一个Dataframe中存在但另一个Dataframe中不存在的行。
假设我们有两个Dataframe,一个包含所有的学生信息,另一个包含已经录取的学生信息。我们想要获取未被录取的学生的信息。下面是两个Dataframe的示例:
# 所有学生的信息
all_students = pd.DataFrame({
'姓名': ['小明', '小王', '小李', '小赵', '小红'],
'年龄': [18, 19, 18, 20, 19],
'性别': ['男', '男', '女', '男', '女'],
'成绩': [85, 90, 95, 80, 88],
})
# 已录取学生的信息
admitted_students = pd.DataFrame({
'姓名': ['小明', '小王', '小红'],
'年龄': [18, 19, 19],
'性别': ['男', '男', '女'],
'成绩': [85, 90, 88],
'录取时间': ['2021-07-01', '2021-07-02', '2021-07-03']
})
我们可以使用pd.merge
函数将两个Dataframe合并,并使用indicator=True
参数指示是否出现在两个Dataframe中。然后,我们可以使用loc
函数来获取不在另一个Dataframe中的行。
merged_df = pd.merge(all_students, admitted_students, on=['姓名', '年龄', '性别', '成绩'], how='left', indicator=True)
not_admitted_students = merged_df.loc[merged_df['_merge'] == 'left_only', all_students.columns]
在上面的代码中,我们使用了left_only
来获取不在另一个Dataframe中的行,而all_students.columns
保留了原始Dataframe中的所有列。
使用以上代码后,我们可以得到以下结果:
姓名 年龄 性别 成绩
2 小李 18 女 95
3 小赵 20 男 80
现在我们已经成功地获取到不在另一个Dataframe中的行了。
阅读更多:Pandas 教程
总结
本文介绍了如何使用Pandas获取一个Dataframe中存在但另一个Dataframe中不存在的行。首先,我们使用pd.merge
函数将两个Dataframe合并,并使用indicator=True
参数指示是否出现在两个Dataframe中。然后,我们可以使用loc
函数来获取不在另一个Dataframe中的行。以上方法可以帮助您快速地处理Dataframe中的数据。