pandas(提取)去除重復項


方法

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM