Pandas---去重drop_duplicates和duplicated

本文介绍了一个数据去重的实际案例,涉及时间、ID和等级三列数据。通过使用Python的pandas库,首先对数据进行整体去重,然后针对同一天同一ID下不同等级的情况进行特殊处理,最终确保数据的唯一性和准确性。

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

今天分享一个去重在项目中的小应用
主要有三列:时间,ID, 等级
重复情况:可能同一天同一个ID对应两个不同的等级
目标是:找出重复情况对应的时间和ID

 # 对合并后的数据进行处理
    data_range.drop_duplicates(inplace=True)  # 对档位数据整体去重,即将同一天同一ID等级相同的去重
    print(data_range.info())  # 去重后,148173
    # 再来看看同一天同一ID中存在不同等级的情况
    data = data_range[['时间', 'ID']]  # 先把等级拿掉
    df = data[data.duplicated(subset=['时间', 'ID']) == True]  # 看看同一天同一户不同档位的情况有多少--->2345个
    print(df)  # 148173-2345=145828  数据刚刚好
    # 将重复数据(等级不同,时间和ID重复的数据)中的时间和ID变为一个元组
    df_tuples = [tuple(xi) for xi in df.values]
    for i, j in df_tuples:
        print(i, j)
        b = np.int64(j)  # 将int类型 转成 numpy.int64类型
        data_range.drop(
            index=data_range[(data_range['时间'] == i) & (data_range['ID'] == b) & (data_range['等级'] == '未分配等级')].index,
            inplace=True)
    print(data_range)

    data1 = data_range.drop_duplicates(subset=['时间', 'ID'], keep='first')  # 去重
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值