【Python】基于某些列删除数据框中的重复值
Python按照某些列去重,可用drop_duplicates函数轻松处理。本文致力用简洁的语言介绍该函数。
本文目录
- drop_duplicates函数介绍
- 加载数据
- 按照某一列去重实例 3.1 按照某一列去重(参数为默认值) 3.2 按照某一列去重(改变keep值) 3.3 按照某一列去重(inplace=True)
- 按照多列去重实例
一、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时直接在原数据视图上删重,没有返回值。
二、加载数据
加载有重复值的数据,并展示数据。
# coding: utf-8
import os #导入设置路径的库
import pandas as pd #导入数据处理的库
import numpy as np #导入数据处理的库
os.chdir('F:/微信公众号/Python/26.基于多列组合删除数据框中的重复值') #把路径改为数据存放的路径
name = pd.read_csv('name.csv',sep=',',encoding='gb18030')
name
得到结果:
注:后文所有的数据操作都是在原始数据集name上进行。
三、按照某一列去重
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。
四、按照多列去重
对多列去重和一列去重类似,只是原来根据一列是否重复删重。现在要根据指定的列判断是否存在重复(顺序也要一致才算重复)删重。
接下来看一个实例:
new_name = name.drop_duplicates(subset=['name1','relation'])
new_name
得到结果:
原始数据中只有第二行和最后一行存在重复,默认保留第一条,故删除最后一条得到新数据框。
想要根据更多列数去重,可以在subset中添加列。如果不写subset参数,默认值为None,即DataFrame中一行元素全部相同时才去除。
从上文可以发现,在Python中用drop_duplicates函数可以轻松地对数据框进行去重。
但是对于两列中元素顺序相反的数据框去重,drop_duplicates函数无能为力。
如需处理这种类型的数据去重问题,参见本公众号中的文章【Python】基于多列组合删除数据框中的重复值。
-end-
- Linux RCU 机制详解
- 《Redis设计与实现》读书笔记(二十九) ——Redis集群执行命令与重新分片
- 如何使用C语言的面向对象
- 《Redis设计与实现》读书笔记(三十) ——Redis集群节点复制与故障转移
- 掌握一点儿统计学
- 高通HAL层之bmp18x.cpp
- Oracle 数据库之最:你见过最高的 SQL Version 是多少?
- Android 子activity关闭 向父activity传值
- 《Redis设计与实现》读书笔记(三十一) ——Redis集群消息类型
- 统计学中的相关性分析
- 《Redis设计与实现》读书笔记(三十二) ——Redis事务设计与实现
- 收藏一个简洁的PHP可逆加密函数
- 《Redis设计与实现》读书笔记(三十二) ——Redis集发布订阅设计与实现
- Android点击EditText文本框之外任何地方隐藏键盘的解决办法
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 静态链表
- 中流砥柱java的动态代理
- java的反射机制到底是做什么的?
- Java中是否直接可以使用enum进行传输
- PHP 恶意程序简单分析
- springboot之相关环境设置
- springboot之第一个springboot程序
- 「查缺补漏」巩固你的RocketMQ知识体系
- springboot之场景启动器
- ICLR2020 | 深度自适应Transformer
- springboot之自动配置
- golang--连接redis数据库并进行增删查改
- golang--redis连接池
- springboot配置之使用application.properties时编码问题
- mybatis动态sql之foreach补充(二)