Pandas中df.drop_duplicates()的用法

df.drop_duplicates() 是 Pandas 中用于删除重复行的函数。它可以根据特定列或整个数据框中出现的重复值,保留第一项或最后一项,并删除其余的重复项。这个函数很适合用于数据清洗,特别是处理重复数据时。

基本语法:

DataFrame.drop_duplicates(subset=None, keep='first', inplace=False, ignore_index=False)

参数说明:

  1. subset: 指定检查重复值的列或列的组合。

    • 类型:列表、字符串或None(默认)。
    • 默认值:None,即对所有列检查重复值。
    • 用法:如果只想根据某些列来判断重复行,可以通过 subset 参数指定这些列。

    示例

    df.drop_duplicates(subset=['col1', 'col2'])
    
  2. keep: 指定在处理重复项时保留哪一项。

    • 类型:{'first', 'last', False}
    • 'first':保留第一次出现的重复项(默认值)。
    • 'last':保留最后一次出现的重复项。
    • False:删除所有重复项,不保留任何重复项。

    示例

    df.drop_duplicates(keep='last')
    df.drop_duplicates(keep=False)  # 删除所有重复项
    
  3. inplace: 是否直接在原数据上修改,还是返回一个新的 DataFrame

    • 类型:布尔值,TrueFalse
    • 默认值:False
    • False:返回一个删除了重复行后的新 DataFrame,不改变原数据。
    • True:直接修改原数据,操作不会返回新 DataFrame

    示例

    df.drop_duplicates(inplace=True)
    
  4. ignore_index: 是否重置索引。

    • 类型:布尔值,TrueFalse
    • 默认值:False
    • True:删除重复项后,重置索引。
    • False:删除重复项后,保留原来的索引。

    示例

    df.drop_duplicates(ignore_index=True)
    

示例:

  1. 删除所有列的重复行(默认行为)

    import pandas as pd
    data = {'A': [1, 1, 2, 2, 3], 'B': [4, 4, 5, 6, 6], 'C': [7, 7, 8, 9, 9]}
    df = pd.DataFrame(data)
    df_cleaned = df.drop_duplicates()
    print(df_cleaned)
    

    输出:

       A  B  C
    0  1  4  7
    2  2  5  8
    3  2  6  9
    4  3  6  9
    
  2. 基于特定列删除重复行

    df_cleaned = df.drop_duplicates(subset=['A'])
    print(df_cleaned)
    

    输出:

       A  B  C
    0  1  4  7
    2  2  5  8
    4  3  6  9
    

    这里根据 A 列删除重复行,保留了第一次出现的每个 A 值。

  3. 保留最后一次出现的重复项

    df_cleaned = df.drop_duplicates(subset=['A'], keep='last')
    print(df_cleaned)
    

    输出:

       A  B  C
    1  1  4  7
    3  2  6  9
    4  3  6  9
    

    这里保留了 A 列中最后一次出现的值。

  4. 删除所有重复行(不保留任何项)

    df_cleaned = df.drop_duplicates(keep=False)
    print(df_cleaned)
    

    输出:

       A  B  C
    2  2  5  8
    3  2  6  9
    4  3  6  9
    

    此时,完全删除了所有重复项。

  5. inplace=True 修改原数据

    df.drop_duplicates(inplace=True)
    print(df)
    

    此时,df 自身已经被修改为删除了重复行的状态。

  6. 重置索引

    df_cleaned = df.drop_duplicates(ignore_index=True)
    print(df_cleaned)
    

    输出:

       A  B  C
    0  1  4  7
    1  2  5  8
    2  2  6  9
    3  3  6  9
    

总结:

df.drop_duplicates() 是 Pandas 中用于去重的函数,允许你根据行或指定列删除重复值,并通过不同的参数控制去重行为和结果。它对数据清洗非常有用,特别是在需要处理重复记录时。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

肥猪猪爸

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

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

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

打赏作者

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

抵扣说明:

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

余额充值