Pandas 如何获取在一个Dataframe中但不在另一个Dataframe中的行

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']
    })
Python

我们可以使用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]
Python

在上面的代码中,我们使用了left_only来获取不在另一个Dataframe中的行,而all_students.columns保留了原始Dataframe中的所有列。

使用以上代码后,我们可以得到以下结果:

   姓名  年龄 性别  成绩
2  小李  18    95
3  小赵  20    80
Python

现在我们已经成功地获取到不在另一个Dataframe中的行了。

阅读更多:Pandas 教程

总结

本文介绍了如何使用Pandas获取一个Dataframe中存在但另一个Dataframe中不存在的行。首先,我们使用pd.merge函数将两个Dataframe合并,并使用indicator=True参数指示是否出现在两个Dataframe中。然后,我们可以使用loc函数来获取不在另一个Dataframe中的行。以上方法可以帮助您快速地处理Dataframe中的数据。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册