pandas.DataFrame.drop_duplicates#

DataFrame.drop_duplicates(subset=None, *, keep='first', inplace=False, ignore_index=False)[源代码]#

返回已删除重复行的 DataFrame。

考虑特定列是可选的。索引(包括时间索引)将被忽略。

参数:
subset列标签或标签的可迭代对象,可选

仅考虑特定列来标识重复项,默认情况下使用所有列。

keep{‘first’, ‘last’, False}, 默认为 ‘first’

确定保留哪些重复项(如果有)。

  • ‘first’ : 删除重复项,但保留第一个出现的。

  • ‘last’ : 删除重复项,但保留最后一个出现的。

  • False : 删除所有重复项。

inplacebool, 默认为 False

是否修改 DataFrame 而不是创建新 DataFrame。

ignore_indexbool, 默认为 False

如果为 True,则结果轴将标记为 0, 1, ..., n - 1。

返回:
DataFrame 或 None

已删除重复项的 DataFrame,如果 inplace=True 则为 None。

另请参阅

DataFrame.value_counts

计算列的唯一组合的计数。

注意

此方法要求 subset 指定的列为可哈希类型。传递不可哈希列将引发 TypeError

示例

考虑包含拉面评分的数据集。

>>> df = pd.DataFrame(
...     {
...         "brand": ["Yum Yum", "Yum Yum", "Indomie", "Indomie", "Indomie"],
...         "style": ["cup", "cup", "cup", "pack", "pack"],
...         "rating": [4, 4, 3.5, 15, 5],
...     }
... )
>>> df
    brand style  rating
0  Yum Yum   cup     4.0
1  Yum Yum   cup     4.0
2  Indomie   cup     3.5
3  Indomie  pack    15.0
4  Indomie  pack     5.0

默认情况下,它会根据所有列删除重复的行。

>>> df.drop_duplicates()
    brand style  rating
0  Yum Yum   cup     4.0
2  Indomie   cup     3.5
3  Indomie  pack    15.0
4  Indomie  pack     5.0

要根据特定列(或列)删除重复项,请使用 subset

>>> df.drop_duplicates(subset=["brand"])
    brand style  rating
0  Yum Yum   cup     4.0
2  Indomie   cup     3.5

要删除重复项并保留最后出现的,请使用 keep

>>> df.drop_duplicates(subset=["brand", "style"], keep="last")
    brand style  rating
1  Yum Yum   cup     4.0
2  Indomie   cup     3.5
4  Indomie  pack     5.0