方法
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