在處理數(shù)據(jù)的時(shí)候,我們經(jīng)常會(huì)遇到處理重復(fù)數(shù)據(jù)的情況。根據(jù)需求一般有兩種情況,下面我們分別針對(duì)兩種情況舉?:
第一種情況,去掉重復(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ù)來(lái)處理這個(gè)問(wèn)題,就是drop_duplicates()函數(shù)。我們看到下面已經(jīng)把重復(fù)的(’a',1)已經(jīng)刪除了。具體的參數(shù)大家可以點(diǎn)擊鏈接,參考官方文檔。總共只有三個(gè)參數(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ù)來(lái)處理這個(gè)問(wèn)題,就是duplicated()函數(shù)。我們可以看到duplicated函數(shù)返回的是布爾類(lèi)型,重復(fù)出現(xiàn)就返回True。該函數(shù)只有兩個(gè)參數(shù),大家可以參考官方文檔。
data.duplicated()
Out[40]:
0 False
1 False
2 False
3 False
4 True
dtype: bool
因?yàn)閗eep參數(shù)默認(rèn)為First,就是除了第一次出現(xiàn)的數(shù)據(jù),其他重復(fù)的數(shù)據(jù)都標(biāo)記為T(mén)rue;如果我們想要獲取所有重復(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
因?yàn)閐uplicated函數(shù)返回的是布爾類(lèi)型,所以要想得到具體的數(shù)據(jù)可以做如下操作:
data[data.duplicated(keep=False)]
Out[42]:
label num
0 a 1
4 a 1
聯(lián)系客服