pandas之去重
Panda DataFrame 对象提供了一个数据去重的函数 drop_duplicates(),本节对该函数的用法做详细介绍。
函数格式
drop_duplicates()函数的语法格式如下:
df.drop_duplicates(subset=['A','B','C'],keep='first',inplace=True)
参数说明如下:
- subset:表示要进去重的列名,默认为 None。
- keep:有三个可选参数,分别是 first、last、False,默认为 first,表示只保留第一次出现的重复项,删除其余重复项,last 表示只保留最后一次出现的重复项,False 则表示删除所有重复项。
- inplace:布尔值参数,默认为 False 表示删除重复项后返回一个副本,若为 Ture 则表示直接在原数据上删除重复项。
实际应用
首先创建一个包含有重复值的 DataFrame 对象,如下所示:
- import pandas as pd
- data={
- 'A':[1,0,1,1],
- 'B':[0,2,5,0],
- 'C':[4,0,4,4],
- 'D':[1,0,1,1]
- }
- df=pd.DataFrame(data=data)
- print(df)
输出结果:
A B C D
0 1 0 4 1
1 0 2 0 0
2 1 5 4 1
3 1 0 4 1
1) 默认保留第一次出现的重复项
import pandas as pd
data={ 'A':[1,0,1,1],
'B':[0,2,5,0],
'C':[4,0,4,4],
'D':[1,0,1,1]
}
df=pd.DataFrame(data=data)
#默认保留第一次出现的重复项
df.drop_duplicates()
输出结果:
A B C D
0 1 0 4 1
1 0 2 0 0
2 1 5 4 1
2) keep=False删除所有重复项
- import pandas as pd
- data={
- 'A':[1,0,1,1],
- 'B':[0,2,5,0],
- 'C':[4,0,4,4],
- 'D':[1,0,1,1]
- }
- df=pd.DataFrame(data=data)
- #默认保留第一次出现的重复项
- df.drop_duplicates(keep=False)
输出结果:
A B C D
1 0 2 0 0
2 1 5 4 1
3) 根据指定列标签去重
- import pandas as pd
- data={
- 'A':[1,3,3,3],
- 'B':[0,1,2,0],
- 'C':[4,5,4,4],
- 'D':[3,3,3,3]
- }
- df=pd.DataFrame(data=data)
- #去除所有重复项,对于B列来说两个0是重复项
- df.drop_duplicates(subset=['B'],keep=False)
- #简写,省去subset参数
- #df.drop_duplicates(['B'],keep=False)
- print(df)
输出结果:
A B C D
1 3 1 5 3
2 3 2 4 3
从上述示例可以看出,删除重复项后,行标签使用的数字是原来的,并没有从 0 重新开始,那么我们应该怎么从 0 重置索引呢?Pandas 提供的 reset_index() 函数会直接使用重置后的索引。如下所示:
import pandas as pd
data={
'A':[1,3,3,3],
'B':[0,1,2,0],
'C':[4,5,4,4],
'D':[3,3,3,3]
}
df=pd.DataFrame(data=data)
#去除所有重复项,对于B来说两个0是重复项
df=df.drop_duplicates(subset=['B'],keep=False)
#重置索引,从0重新开始
df.reset_index(drop=True)
输出结果:
A B C D
0 3 1 5 3
1 3 2 4 3
4) 指定多列同时去重
创建一个 DataFrame 对象,如下所示:
- import numpy as np
- import pandas as pd
- df = pd.DataFrame({'Country ID':[1,1,2,12,34,23,45,34,23,12,2,3,4,1],
- 'Age':[12,12,15,18, 19, 25, 21, 25, 25, 18, 25,12,32,18],
- 'Group ID':['a','z','c','a','b','s','d','a','b','s','a','d','a','f']})
- #last只保留最后一个重复项
- df.drop_duplicates(['Age','Group ID'],keep='last')
输出结果:
Country ID Age Group ID
0 1 12 a
1 1 12 z
2 2 15 c
3 3 18 a
4 4 19 b
5 3 25 s
6 4 21 d
8 2 25 b
9 1 18 s
10 2 25 a
11 3 12 d
12 4 32 a
13 1 18 f
上述数据集中,第 7 行、第 10 行对应的列标签数据相同,我们使用参数值“last”保留最后一个重复项,也就是第 10 行数据。
关注微信公众号「站长严长生」,在手机上阅读所有教程,随时随地都能学习。本公众号由C语言中文网站长运营,每日更新,坚持原创,敢说真话,凡事有态度。
pandas之去重的更多相关文章
- Pandas数据去重和对重复数据分类、求和,得到未重复和重复(求和后)的数据
人的理想志向往往和他的能力成正比. —— 约翰逊 其实整个需求呢,就是题目.2018-08-16 需求的结构图: 涉及的包有:pandas.numpy 1.导入包: import pandas as ...
- pandas DF去重
实例 import pandas as pd data=pd.DataFrame({'产品':['A','A','A','A'],'数量':[50,50,30,30]}) 去重 data.drop_d ...
- pandas常用操作详解——pandas的去重操作df.duplicated()与df.drop_duplicates()
df.duplicated() 参数详解: subset:检测重复的数据范围.默认为数据集的所有列,可指定特定数据列: keep: 标记哪个重复数据,默认为'first'.1.'first':标记重复 ...
- python 去重方法
待补充:https://www.cnblogs.com/zknublx/p/6042295.html 一.使用集合直接去重 ids = [1,4,3,3,4,2,3,4,5,6,1]ids = lis ...
- 学习笔记之Python全栈开发/人工智能公开课_腾讯课堂
Python全栈开发/人工智能公开课_腾讯课堂 https://ke.qq.com/course/190378 https://github.com/haoran119/ke.qq.com.pytho ...
- 我的Python分析成长之路11
数据预处理 如何对数据进行预处理,提高数据质量,是数据分析中重要的问题. 1.数据合并 堆叠合并数据,堆叠就是简单地把两个表拼在一起,也被称为轴向链接,绑定或连接.依照轴的方向,数据堆叠可分为横向堆叠 ...
- 04. Pandas 3| 数值计算与统计、合并连接去重分组透视表文件读取
1.数值计算和统计基础 常用数学.统计方法 数值计算和统计基础 基本参数:axis.skipna df.mean(axis=1,skipna=False) -->> axis=1是按行来 ...
- Pandas Dataframe增、删、改、查、去重、抽样基本操作
总括 pandas的索引函数主要有三种: loc 标签索引,行和列的名称 iloc 整型索引(绝对位置索引),绝对意义上的几行几列,起始索引为0 ix 是 iloc 和 loc的合体 at是loc的快 ...
- pandas的合并、连接、去重、替换
import pandas as pd import numpy as np # merge合并 ,类似于Excel中的vlookup df1 = pd.DataFrame({'key': ['K0' ...
- pandas dataframe重复数据查看.判断.去重
本文详解如何使用pandas查看dataframe的重复数据,判断是否重复,以及如何去重 dataframe数据样本: import pandas as pd df = pd.DataFrame({' ...
随机推荐
- @Async异步注解的使用
@Async 简介 使用spring快速开启异步执行服务的注解 应用场景 同步:同步就是整个处理过程顺序执行,当各个过程都执行完毕,并返回结果. 异步: 异步调用则是只是发送了调用的指令,调用者无需等 ...
- 源代码管理工具:Github
GitHub是一个基于Git的进行版本控制的代码托管网站. Git指的是是一个开放源代码版本控制系统,由Linus Torvalds启动.在时间的累积下,现在的Github是一个最大的开源软件社区.在 ...
- java中锁的应用(ReentrantLock)
package com.xielu.test; public class explicit { private static Lock lock = new ReentrantLock(); priv ...
- uni-app中调用高德地图去设置点和轨迹
盒子部分 <view style="width: 100%; height: 100%" id="busContainer"> </view& ...
- 「进阶」缓解眼睛疲劳,防蓝光保护视力,关爱健康!- CareUEyes
软件官网地址:https://care-eyes.com/ 显示 对于显示页面来说 8 个模式下面都有对应的介绍说明,不再介绍.笔者建议软件调节之前,先退出软件,用系统自带的亮度调节,进入电源选项中进 ...
- RKO组——冲刺随笔(2)
这个作业属于哪个课程 至诚软工实践F班 这个作业要求在哪里 第五次团队作业:项目冲刺 这个作业的目标 记录冲刺计划.要求包括当天会议照片.会议内容以及项目燃尽图(项目进度) 1.昨日进展 已开始着手模 ...
- 【原创】android 7.0 通知报错 java.lang.SecurityException: You need MANAGE_USERS permission to: check if specified user a managed profile outside your profile group
项目中在后台发送通知,突然某一天测出在Android 7.0上通知发送失败,那么根据提示,我们尝试加了MANAGE_USERS权限,看起来是个系统级别权限,验证后果然无效.接着在搜索后都无果,似乎大家 ...
- 前端复习之jQuery大全
Jquery知识点梳理 梳理图摘自--https://www.cnblogs.com/859630097com/p/14433611.html [手机版]横屏观看,效果更佳 JavaScript类库: ...
- 转发:TypeScript Monorepo 最佳实践
当我们跨多个代码仓库管理多个项目之间的依赖关系时,既耗时又容易出错.monorepo 是一种处理上述问题的代码管理架构概念,它将多个项目的所有隔离代码库整合到一个大型存储库中,而不是单独管理它们.当与 ...
- node+appium安装
node是什么: node全称Node.js,是一个基于Chrome V8引擎的JavaScript运行环境,一个让JavaScript 运行在服务端的开发平台:它让JavaScript成为与PH ...