程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

pandas去重 保留前一條或後一條 drop_duplicates

編輯:Python

pandas去重 保留前一條或後一條 drop_duplicates

  • subset參數
  • keep參數
  • inplace參數
  • 例子

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

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved