Pandas 模块-操纵数据(8)-去除重复行 .drop_duplicates()

本文详细介绍了Pandas库中去除数据框重复行的方法`drop_duplicates()`,包括其语法、参数说明及实例演示。`subset`参数用于指定考虑哪些列,`keep`参数决定保留重复行的哪一例('first'、'last'或False),`inplace`决定是否原地修改,`ignore_index`则用于重置索引。通过实例展示了如何根据这些参数组合来有效地删除重复数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

8. 去除重复行 .drop_duplicates()

8.1 .drop_duplicates() 语法

8.1.1 .drop_duplicates() 语法结构

8.1.2 .drop_duplicates() 参数说明

8.2 .drop_duplicates() 范例

8.2.1 subset

8.2.2 keep

8.2.3 inplace

8.2.4 ignore_index


8. 去除重复行 .drop_duplicates()

8.1 .drop_duplicates() 语法

Help on method drop_duplicates in module pandas.core.frame:

drop_duplicates(subset: 'Optional[Union[Hashable, Sequence[Hashable]]]' = None, keep: 'Union[str, bool]' = 'first', inplace: 'bool' = False, ignore_index: 'bool' = False) -> 'Optional[DataFrame]' method of pandas.core.frame.DataFrame instance
    Return DataFrame with duplicate rows removed.
    
    Considering certain columns is optional. Indexes, including time indexes
    are ignored.
    
    Parameters
    ----------
    subset : column label or sequence of labels, optional
        Only consider certain columns for identifying duplicates, by
        default use all of the columns.
    keep : {'first', 'last', False}, default 'first'
        Determines which duplicates (if any) to keep.
        - ``first`` : Drop duplicates except for the first occurrence.
        - ``last`` : Drop duplicates except for the last occurrence.
        - False : Drop all duplicates.
    inplace : bool, default False
        Whether to drop duplicates in place or to return a copy.
    ignore_index : bool, default False
        If True, the resulting axis will be labeled 0, 1, …, n - 1.
    
        .. versionadded:: 1.0.0
    
    Returns
    -------
    DataFrame or None
        DataFrame with duplicates removed or None if ``inplace=True``.

8.1.1 .drop_duplicates() 语法结构

DataFrame.drop_duplicates(subset: 'Optional[Union[Hashable, Sequence[Hashable]]]' = None, keep: 'Union[str, bool]' = 'first', inplace: 'bool' = False, ignore_index: 'bool' = False)

8.1.2 .drop_duplicates() 参数说明

subset:列标识或者列的序列,可选。默认值是None,即使用所有的列进行检测,如果 subset 指定了部分列,则只考虑 subset 指定列是否重复。
keep:可选的集合  {'first', 'last', False},默认是 ‘first’。这个域决定了如何去保留重复行。
        'first':重复的行中,除了第一行,其余删除 

        'last':重复的行中,除了最后行,其余删除 

        False:删除所有重复的行

inplace:布尔值,默认为 False。决定是否原地改变还是返回一个副本。

ignore_index:布尔值,默认为 False。 如果为 True,那么起作用的轴则会标记为 0,1,....n-1

返回值:数据结构为 DataFrame 或者 None。当 `inplace=True` 且所有的行都被删除时候,得到是 None

8.2 .drop_duplicates() 范例

准备数据

dict_data={"a":list("abcdaa"),"b":list("abfccc"),"c":list("ggijgg")}
df=pd.DataFrame.from_dict(dict_data)
df

8.2.1 subset

默认情况,针对所有列进行判断,4、5 、6 行重复,只保留 4 行

 subset 只针对少量列,针对 'a' 列进行判断,3、4、5 、6 行重复,只保留 3 行

8.2.2 keep

keep='last',只保留最后一行,针对 'a' 列进行判断,3、4、5 、6 行重复,只保留 6 行

keep=False,删除所有行,针对 'a' 列进行判断,3、4、5 、6 行重复,全部被删除了

8.2.3 inplace

inplace:布尔值,默认为 False。决定是否原地改变还是返回一个副本。

inplace 为 False 时候,不会进行原地改变,而 inplace 设置为 True 时候,会原地改变。

8.2.4 ignore_index

ignore_index:布尔值,默认为 False。 如果为 True,那么起作用的轴则会标记为 0,1,....n-1

为了使用这个参数,重新设计测试数据

dict_data={"a":list("abcdaaa"),"b":list("abfcccc"),"c":list("ggijggg")}
df=pd.DataFrame.from_dict(dict_data)
df.index=["A","B","C","D","E","F","G"]
df

 ignore_index=True,起作用的轴则会标记为 0,1,....n-1

#subset 只考虑列 'a',
# keep = False,即删除所有重复行
# ignore_index=True,起作用的轴则会标记为 0,1,....n-1
df.drop_duplicates(subset=['a'],keep =False,ignore_index=True)

ignore_index=False,保留原来的 index name

#subset 只考虑列 'a',
# keep = False,即删除所有重复行
# ignore_index=False,保留原来的 index name
df.drop_duplicates(subset=['a'],keep =False,ignore_index=False)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

江南野栀子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值