在處理數(shù)據(jù)的時候,,我們經(jīng)常會遇到處理重復(fù)數(shù)據(jù)的情況。根據(jù)需求一般有兩種情況,,下面我們分別針對兩種情況舉?: 第一種情況,,去掉重復(fù)的數(shù)據(jù): ### 構(gòu)造數(shù)據(jù) 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已經(jīng)有相關(guān)的函數(shù)來處理這個問題,就是drop_duplicates()函數(shù),。我們看到下面已經(jīng)把重復(fù)的(’a',1)已經(jīng)刪除了,。具體的參數(shù)大家可以點擊鏈接,參考官方文檔,??偣仓挥腥齻€參數(shù)。 data.drop_duplicates() Out[18]: label num 0 a 1 1 a 2 2 b 1 3 b 2 我們也可以利用subset參數(shù)指定去除某一列的重復(fù)值,。 data.drop_duplicates(subset='label') Out[20]: label num 0 a 1 2 b 1 第二種情況,,從數(shù)據(jù)中提取重復(fù)的數(shù)據(jù): DataFrame也提供了相關(guān)的函數(shù)來處理這個問題,就是duplicated()函數(shù),。我們可以看到duplicated函數(shù)返回的是布爾類型,,重復(fù)出現(xiàn)就返回True。該函數(shù)只有兩個參數(shù),,大家可以參考官方文檔,。 data.duplicated() Out[40]: 0 False 1 False 2 False 3 False 4 True dtype: bool 因為keep參數(shù)默認(rèn)為First,就是除了第一次出現(xiàn)的數(shù)據(jù),,其他重復(fù)的數(shù)據(jù)都標(biāo)記為True,;如果我們想要獲取所有重復(fù)的數(shù)據(jù),可以將keep的值賦值為False,。如下所示,,就可以提取出所有重復(fù)的數(shù)據(jù)。 data.duplicated(keep=False) Out[41]: 0 True 1 False 2 False 3 False 4 True dtype: bool 因為duplicated函數(shù)返回的是布爾類型,,所以要想得到具體的數(shù)據(jù)可以做如下操作: data[data.duplicated(keep=False)] Out[42]: label num 0 a 1 4 a 1 |
|