Pandas如何删除两列中值相同的行

Pandas如何删除两列中值相同的行

在本文中,我们将介绍如何在Pandas数据框中删除含有两列中值相同的行。对于某些数据集,可能存在某两列中会出现相同的数据,如果要在分析数据时排除这些数据行,可以使用以下方法。

假设我们有以下的数据框:

Name Age Gender
0 John 20 Male
1 Mary 30 Female
2 Alex 25 Male
3 Sam 20 Male
4 Kim 30 Female

现在我们想要删除Age和Gender两列中有相同值的行,即行0和3。

阅读更多:Pandas 教程

方法一:使用duplicated()函数

可以使用duplicated()函数,该函数会返回一个布尔类型的Series,表示每行是否为重复行。我们可以将Age和Gender两列合并作为判断依据。

df[df.duplicated(subset=['Age', 'Gender'], keep=False)]
Python

输出:

Name Age Gender
0 John 20 Male
3 Sam 20 Male

我们可以看到,输出结果仅保留了Age和Gender两列中值重复的行。但是需要注意的是,虽然我们通过keep=False参数保留了所有重复行,但是该函数仍然只返回首次出现的重复行。如果要删除重复行,需要将~符号添加在前面。

df[~df.duplicated(subset=['Age','Gender'],keep=False)]
Python

输出:

Name Age Gender
1 Mary 30 Female
2 Alex 25 Male
4 Kim 30 Female

方法二:使用groupby()函数

另一种方法是使用groupby()函数,将Age和Gender两列作为分组依据,然后使用filter()函数过滤掉组内仅有一行数据的组,最后再将滤掉的行删除。

df.groupby(['Age','Gender']).filter(lambda x: len(x) > 1)
Python

输出:

Name Age Gender
0 John 20 Male
3 Sam 20 Male

我们可以看到,输出结果与方法一得到的结果一致。需要注意的是,在对组进行过滤操作时,我们使用的是lambda函数,其中x为每个组内的数据集合,len(x)表示该组内包含的数据行数。

总结

本文介绍了两种简单的方法来删除Pandas数据框中含有两列中值相同的行,即使用duplicated()函数和groupby()函数。前者通过返回首次出现的重复行来快速操作数据,后者则通过filter()函数进行了更多的操作,将组内仅有一行的数据剔除后再删除。无论采用哪种方法,都可以有效的删除数据框中的重复数据。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册