方法
DataFrame.drop_duplicates(subset=None, keep='first', inplace=False)
參數
subset : column label or sequence of labels, optional
用來指定特定的列,預設所有列
keep : {‘first’, ‘last’, False}, default ‘first’
删除重複項并保留第一次出現的項
inplace : boolean, default False
是直接在原來資料上修改還是保留一個副本
實戰
第一種情況,去掉重複的資料:
### 構造資料
data = pd.DataFrame(data=[['a',1],['a',2],['b',1],['b',2],['a',1]],columns=['label','num'])
data
Out[17]:
label num
0 a 1
1 a 2
2 b 1
3 b 2
4 a 1
Dataframe已經有相關的函數來處理這個問題,就是drop_duplicates()函數。我們看到下面已經把重複的(’a',1)已經删除了。具體的參數大家可以點選連結,參考官方文檔。總共隻有三個參數。
data.drop_duplicates()
Out[18]:
label num
0 a 1
1 a 2
2 b 1
3 b 2
我們也可以利用subset參數指定去除某一列的重複值。
data.drop_duplicates(subset='label')
Out[20]:
label num
0 a 1
2 b 1
第二種情況,從資料中提取重複的資料:
DataFrame也提供了相關的函數來處理這個問題,就是duplicated()函數。我們可以看到duplicated函數傳回的是布爾類型,重複出現就傳回True。該函數隻有兩個參數,大家可以參考官方文檔。
data.duplicated()
Out[40]:
0 False
1 False
2 False
3 False
4 True
dtype: bool
因為keep參數預設為First,就是除了第一次出現的資料,其他重複的資料都标記為True;如果我們想要擷取所有重複的資料,可以将keep的值指派為False。如下所示,就可以提取出所有重複的資料。
data.duplicated(keep=False)
Out[41]:
0 True
1 False
2 False
3 False
4 True
dtype: bool
因為duplicated函數傳回的是布爾類型,是以要想得到具體的資料可以做如下操作:
data[data.duplicated(keep=False)]
Out[42]:
label num
0 a 1
4 a 1
參考文章:
https://blog.csdn.net/zx1245773445/article/details/99973622?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.pc_relevant_is_cache&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.pc_relevant_is_cache
https://blog.csdn.net/u010665216/article/details/78559091