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两列合并作为判断依据。
输出:
Name | Age | Gender | |
---|---|---|---|
0 | John | 20 | Male |
3 | Sam | 20 | Male |
我们可以看到,输出结果仅保留了Age和Gender两列中值重复的行。但是需要注意的是,虽然我们通过keep=False参数保留了所有重复行,但是该函数仍然只返回首次出现的重复行。如果要删除重复行,需要将~符号添加在前面。
输出:
Name | Age | Gender | |
---|---|---|---|
1 | Mary | 30 | Female |
2 | Alex | 25 | Male |
4 | Kim | 30 | Female |
方法二:使用groupby()函数
另一种方法是使用groupby()函数,将Age和Gender两列作为分组依据,然后使用filter()函数过滤掉组内仅有一行数据的组,最后再将滤掉的行删除。
输出:
Name | Age | Gender | |
---|---|---|---|
0 | John | 20 | Male |
3 | Sam | 20 | Male |
我们可以看到,输出结果与方法一得到的结果一致。需要注意的是,在对组进行过滤操作时,我们使用的是lambda函数,其中x为每个组内的数据集合,len(x)表示该组内包含的数据行数。
总结
本文介绍了两种简单的方法来删除Pandas数据框中含有两列中值相同的行,即使用duplicated()函数和groupby()函数。前者通过返回首次出现的重复行来快速操作数据,后者则通过filter()函数进行了更多的操作,将组内仅有一行的数据剔除后再删除。无论采用哪种方法,都可以有效的删除数据框中的重复数据。