聊聊python中令人迷惑的duplicated和drop_duplicates()用法
前言
在算face_track_id map有感:
開始驗(yàn)證
data={'state':[1,1,2,2,1,2,2,2],'pop':['a','b','c','d','b','c','d','d']}
frame=pd.DataFrame(data)
frame

frame.shape $ (8,2)
# 說(shuō)明duplicated()是對(duì)整行進(jìn)行查重,return 重復(fù)了的數(shù)據(jù),且只現(xiàn)實(shí)n-1條重復(fù)的數(shù)據(jù)(n是重復(fù)的次數(shù)) frame[frame.duplicated() == True]
一開始還很疑惑,明明(1,b)只出現(xiàn)了1次,哪里duplicate了。其實(shí),人家return的結(jié)果是去掉已經(jīng)出現(xiàn)過(guò)一次的行數(shù)據(jù)了。所以看起來(lái)有點(diǎn)confuse,感覺(1,b)并沒有重復(fù),但其實(shí)人家的函數(shù)很簡(jiǎn)潔呢,返回了重復(fù)值而且不冗余。

# 說(shuō)明drop_duplicates()函數(shù)是將所有重復(fù)的數(shù)據(jù)都去掉了,且默認(rèn)保留重復(fù)數(shù)據(jù)的第一條。 # 比如(2,d)出現(xiàn)了3次,在duplicated()中顯示了2次,在drop_dupicates()后保留了一個(gè) frame.drop_duplicates().shape $ (4,2)
# 留下了完全唯一的數(shù)據(jù)行 frame.drop_duplicates()

補(bǔ)充:python的pandas重復(fù)值處理(duplicated()和drop_duplicates())
一、生成重復(fù)記錄數(shù)據(jù)
import numpy as np import pandas as pd #生成重復(fù)數(shù)據(jù) df=pd.DataFrame(np.ones([5,2]),columns=['col1','col2']) df['col3']=['a','b','a','c','d'] df['col4']=[3,2,3,2,2] df=df.reindex(columns=['col3','col4','col1','col2']) #將新增的一列排在第一列 df
輸出:

二、判斷重復(fù)記錄(行)
#判斷重復(fù)數(shù)據(jù) isDplicated=df.duplicated() #判斷重復(fù)數(shù)據(jù)記錄 isDplicated
輸出:

三、刪除重復(fù)值
#刪除重復(fù)值 new_df1=df.drop_duplicates() #刪除數(shù)據(jù)記錄中所有列值相同的記錄 new_df2=df.drop_duplicates(['col3']) #刪除數(shù)據(jù)記錄中col3列值相同的記錄 new_df3=df.drop_duplicates(['col4']) #刪除數(shù)據(jù)記錄中col4列值相同的記錄 new_df4=df.drop_duplicates(['col3','col4']) #刪除數(shù)據(jù)記錄中(col3和col4)列值相同的記錄 new_df1 new_df2 new_df3 new_df4
輸出:


以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python實(shí)現(xiàn)加密的RAR文件解壓的方法(密碼已知)
這篇文章主要介紹了Python實(shí)現(xiàn)加密的RAR文件解壓,本文分步驟給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-09-09
django序列化時(shí)使用外鍵的真實(shí)值操作
這篇文章主要介紹了django序列化時(shí)使用外鍵的真實(shí)值操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-07-07
django使用F方法更新一個(gè)對(duì)象多個(gè)對(duì)象字段的實(shí)現(xiàn)
這篇文章主要介紹了django使用F方法更新一個(gè)對(duì)象多個(gè)對(duì)象字段的實(shí)現(xiàn),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-03-03
在python中實(shí)現(xiàn)同行輸入/接收多個(gè)數(shù)據(jù)的示例
今天小編就為大家分享一篇在python中實(shí)現(xiàn)同行輸入/接收多個(gè)數(shù)據(jù)的示例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-07-07
Pycharm2020.1安裝中文語(yǔ)言插件的詳細(xì)教程(不需要漢化)
這篇文章主要介紹了Pycharm2020.1安裝中文語(yǔ)言插件的詳細(xì)教程,不需要漢化,本文給大家分享三種方法,在這小編推薦使用方法二,具體內(nèi)容詳情大家跟隨小編一起看看吧2020-08-08
Django的數(shù)據(jù)模型訪問多對(duì)多鍵值的方法
這篇文章主要介紹了Django的數(shù)據(jù)模型訪問多對(duì)多鍵值的方法,Django是Python豐富多彩的web框架中最具人氣的一個(gè),需要的朋友可以參考下2015-07-07
Pandas.DataFrame刪除指定行和列(drop)的實(shí)現(xiàn)
本文主要介紹了Pandas.DataFrame刪除指定行和列(drop)的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-02-02
Python實(shí)現(xiàn)單項(xiàng)鏈表的最全教程
單向鏈表也叫單鏈表,是鏈表中最簡(jiǎn)單的一種形式,它的每個(gè)節(jié)點(diǎn)包含兩個(gè)域,一個(gè)信息域(元素域)和一個(gè)鏈接域,這個(gè)鏈接指向鏈表中的下一個(gè)節(jié)點(diǎn),而最后一個(gè)節(jié)點(diǎn)的鏈接域則指向一個(gè)空值,這篇文章主要介紹了Python實(shí)現(xiàn)單項(xiàng)鏈表,需要的朋友可以參考下2023-01-01
Python Selenium實(shí)現(xiàn)無(wú)可視化界面過(guò)程解析
這篇文章主要介紹了Python Selenium實(shí)現(xiàn)無(wú)可視化界面過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-08-08

