pandas去重 保留前一条或后一条 drop_duplicates

pandas去重 保留前一条或后一条 drop_duplicates


pandas库中的drop_duplicates()函数简直就是去重的神器,该函数还可以在去重中人为设置保留靠前的记录还是靠后的记录。

DataFrame.drop_duplicates(self, subset=None, keep='first', inplace=False)[source]

一共有三个参数,subset、keep和inplace

subset参数

subset : column label or sequence of labels, optional
Only consider certain columns for identifying duplicates, by default use all of the columns

subset参数用来设置以哪些列的重复作为重复的标准,参数为列标签,如果不设置该值,则默认为以所有列作为重复的判断条件。

keep参数

keep : {‘first’, ‘last’, False}, default ‘first’
first : Drop duplicates except for the first occurrence.
last : Drop duplicates except for the last occurrence.
False : Drop all duplicates.

keep可以设置为三个参数,默认为first
first表示保留第一次出现的记录
last表示保留最后一次出现的记录
False表示把所有重复的删除

inplace参数

inplace : boolean, default False
Whether to drop duplicates in place or to return a copy

inplace可以设置为True或False,默认为False
True表示原地去重,会改变dataframe
False表示会返回一个新的dataframe,不会改变原来的变量

例子

import pandas as pd
data = pd.DataFrame([[1, 'Wang', 20], [2, 'Li', 20], [1, 'Wang', 21], [1, 'Wang', 20]], columns=['id', 'name', 'age'])

数据为

   id  name age
0   1  Wang  20
1   2    Li  20
2   1  Wang  21
3   1  Wang  20

很显然第0条和第3条记录重复,使用默认用法即可去除

print(data.drop_duplicates())

结果是

   id  name  age
0   1  Wang   20
1   2    Li   20
2   1  Wang   21

很显然是保留了第0条记录,而去除了第3条记录,可通过设置keep参数为last使其保留后一条参数

print(data.drop_duplicates(keep='last'))

结果是

   id  name  age
1   2    Li   20
2   1  Wang   21
3   1  Wang   20

同时对于数据集

   id  name age
0   1  Wang  20
1   2    Li  20
2   1  Wang  21
3   1  Wang  20

认为id和name相同即为重复的话,可以使用

print(data.drop_duplicates(['id', 'name']))

得到

   id  name  age
0   1  Wang   20
1   2    Li   20

如果想把重复的数据都删除,则使用

print(data.drop_duplicates(['id', 'name'], keep=False))

得到

   id name  age
1   2   Li   20
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值