【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源创计划”,欢迎正在阅读的你也加入,一块儿分享。

相关文章
相关标签/搜索