天天看點

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

繼續閱讀