Pandas Python – 如何基于两个列的组合删除dataframe中的重复项
在我们的日常工作中,数据经常是以表格的形式表现的。如果我们处理的数据量过大,我们有可能会遇到重复项的问题。在这种情况下,我们需要采用一些方法来删除这些重复项,以使分析和统计数据时能够更加准确,避免数据产生偏差。那么在Python Pandas库中,我们如何基于两个列的组合删除dataframe中的重复项呢?接下来,本文将为大家介绍。
阅读更多:Pandas 教程
读取CSV文件生成dataframe
在讲解具体方法之前,我们先通过读取CSV文件的方式来生成一个dataframe,以便于我们更好地理解方法。请看下面的代码:
上述代码中,我们首先导入pandas库,然后通过read_csv函数来读取CSV文件,将其转化为dataframe,并将生成的dataframe赋值给df变量。最后我们使用print函数将dataframe打印出来。读取CSV文件的结果如下所示:
Name | Age | Gender | Score |
---|---|---|---|
Tom | 18 | Male | 90 |
Jerry | 20 | Male | 85 |
Lucy | 18 | Female | 86 |
Lily | 19 | Female | 92 |
Tom | 18 | Male | 90 |
Willy | 21 | Male | 88 |
从结果中可以看到,dataframe中存在重复的数据行。
基于两列组合删除重复项
在Pandas库中,我们可以使用drop_duplicates函数来删除dataframe中的重复项。但是,如果我们需要基于两个列的组合来删除数据行,该怎么办呢?我们可以通过引入参数subset来指定选定的列。接下来,我们将通过例子来介绍如何实现。
上述代码中,我们使用drop_duplicates函数来删除dataframe中的重复项。其中参数subset指定了我们选定的列为‘Name’和‘Age’。结果如下所示:
Name | Age | Gender | Score |
---|---|---|---|
Tom | 18 | Male | 90 |
Jerry | 20 | Male | 85 |
Lucy | 18 | Female | 86 |
Lily | 19 | Female | 92 |
Willy | 21 | Male | 88 |
从结果中可以看到,我们成功地删除了由‘Tom’和‘Age’组成的重复项。
修改dataframe中的值
另外,我们也可以通过修改dataframe中的值来删除重复项。在这种情况下,我们需要结合loc函数和判断语句一起使用。
上述代码中,我们生成了一个新的dataframe,该dataframe仅包含不包含由‘Tom’和‘Age’组成的重复项。具体实现过程是,使用for循环遍历dataframe中的每一行,如果当前行与‘Tom’和‘Age’组成的重复项相同,则不将该行加入到新的dataframe中;否则,就将该行加入到新的dataframe中。最后,我们通过打印新的dataframe来确认结果。结果如下所示:
Name | Age | Gender | Score |
---|---|---|---|
Tom | 18 | Male | 90 |
Jerry | 20 | Male | Lucy | 18 | Female | 86 |
Lily | 19 | Female | 92 |
Willy | 21 | Male | 88 |
从结果中可以看到,我们成功地删除了由‘Tom’和‘Age’组成的重复项。
性能比较
下面,我们将基于两个列的组合删除dataframe中的重复项的两种方法进行性能比较。
我们分别使用两种方法来删除dataframe中的重复项,并使用time库来计算两种方法的处理时间。结果如下所示:
从结果中可以看到,使用drop_duplicates函数要比修改dataframe中的值来删除重复项的方式更加高效。
总结
本文主要介绍了如何基于两个列的组合删除dataframe中的重复项。我们介绍了两种方法,即使用drop_duplicates函数和通过修改dataframe中的值来删除重复项,并对它们的性能进行了比较。通过学习本文,相信大家已经对如何删除dataframe中的重复项有了更加深刻的理解。