在處理數據的時候,我們經常會遇到處理重複數據的情況。根據需求一般有兩種情況,下面我們分別針對兩種情況舉?:
第一種情況,去掉重複的數據:
### 構造數據
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