【Python】基於某些列刪除數據框中的重複值

阿黎逸陽

  精選Python、SQL、R、MATLAB等相關知識,讓你的學習和工做更出彩(可提供風控建模乾貨經驗)python

Python按照 某些列去重 ,可用 drop_duplicates函數輕鬆處理 。本文致力用簡潔的語言介紹該函數。
本文目錄
  1. drop_duplicates函數介紹nginx

  2. 加載數據
    web

  3. 按照某一列去重實例微信

    3.1 按照某一列去重(參數爲默認值)app

    3.2 按照某一列去重(改變keep值)函數

    3.3 按照某一列去重(inplace=True)
    學習

  4. 按照多列去重實例ui


1、drop_duplicates函數介紹
drop_duplicates函數能夠 按某列去重 ,也能夠 按多列去重 。具體語法以下:
DataFrame.drop_duplicates(subset=None,keep='first',inplace=False)
代碼解析:
DataFrame待去重的數據框
subset:用來指定特定的列,根據指定的列對數據框去重。默認值爲None, 即DataFrame中一行元素所有相同時纔去除。
keep:對重複值的處理方式,可選{'first', 'last', 'False'}。默認值 first,即保留重複數據第一條。 若選last爲保留重複數據的最後一條,若選False則刪除 所有 重複數據。
inplace是否在原數據集上操做。 默認值False ,即把原數據copy一份,在copy數據上刪除重複值,並返回新數據框(原數據框不改變)。值爲True時直接在原數據視圖上刪重,沒有返回值。


2、加載數據spa

加載有重複值的數據,並展現數據。
# coding: utf-8import os #導入設置路徑的庫import pandas as pd #導入數據處理的庫import numpy as np #導入數據處理的庫
os.chdir('F:/微信公衆號/Python/26.基於多列組合刪除數據框中的重複值') #把路徑改成數據存放的路徑name = pd.read_csv('name.csv',sep=',',encoding='gb18030')name

獲得結果:.net

注: 後文全部的數據操做都是在原始數據集name上進行。


3、按照某一列去重

 1  按照某一列去重(參數爲默認值)

按照name1對數據框去重。

new_name_1 = name.drop_duplicates(subset='name1')new_name_1

獲得結果:

從結果知,參數爲默認值時,是在原數據的copy上刪除數據,保留重複數據第一條並返回新數據框

感興趣的能夠打印name數據框,刪重操做不影響name的值。

 2  按照某一列去重(改變keep值)
2.1 實例一(keep='last')

按照name1對數據框去重,並設置keep='last'。

new_name_1 = name.drop_duplicates(subset='name1',keep='last')new_name_1

獲得結果:

從結果知,參數keep='last',是在原數據的copy上刪除數據,保留重複數據最後一條並返回新數據框,不影響原始數據框name。

2.2 實例二(keep=False)
按照name1對數據框去重,並設置keep=False。
new_name_2 = name.drop_duplicates(subset='name1',keep=False)new_name_2
獲得結果:

從結果知,參數keep=False,是把原數據copy一份,在copy數據框中刪除所有重複數據,並返回新數據框,不影響原始數據框name。

 3  按照某一列去重(inplace=True)

按照name1去重,並設置inplace=True
new_name_3 = name.drop_duplicates(subset='name1',inplace=True)new_name_3

結果中new_name_3的值爲空,即設置inplace=True時沒有返回結果,是在原始數據框name上直接進行操做。打印name可得結果:

結果和按照某一列去重(參數爲默認值)是同樣的。

若是想保留原始數據框直接用默認值便可,若是想直接在原始數據框刪重可設置參數inplace=True


4、按照多列去重

對多列去重和一列去重相似,只是原來根據一列是否重複刪重。如今要根據指定的列判斷是否存在重複(順序也要一纔算重複)刪重。
接下來看一個實例:
new_name = name.drop_duplicates(subset=['name1','relation'])new_name
獲得結果:

原始數據中只有第二行最後一行存在重複,默認保留第一條,故刪除最後一條獲得新數據框。

想要根據更多列數去重,能夠在subset中添加列。若是不寫subset參數,默認值爲None,即DataFrame中一行元素所有相同時纔去除。

從上文能夠發現,在Python中用drop_duplicates函數能夠輕鬆地對數據框進行去重。

可是對於兩列中元素順序相反的數據框去重,drop_duplicates函數無能爲力。

如需處理這種類型的數據去重問題,參見本公衆號中的文章【Python】基於多列組合刪除數據框中的重複值



-end-

往期回顧:

3D星空圖
用python繪製皮卡丘
娛樂圈排行榜動態條形圖繪製

最後附上個人聯繫方式:微信號、手機號(19967879837)
掃一掃加我,有問題歡迎諮詢\(^o^)/~
轉發與在看是更好的支持

本文分享自微信公衆號 - 阿黎逸陽的代碼(gh_f3910c467dfe)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。

相關文章
相關標籤/搜索