pandas去除重复列的实现方法


Posted in Python onJanuary 29, 2019

数据准备

假设我们目前有两个数据表:

① 一个数据表是关于三个人他们的id以及其他的几列属性信息

import pandas as pd
import numpy as np
data = pd.DataFrame(np.random.randint(low=1,high=20,size=(3,4)))
data['id'] = range(1,4)
# 输出:其中,最左边的0 1 2 为其索引

pandas去除重复列的实现方法

② 另外一个数据表是3个用户的app操作日志信息,一个人会有多条app操作记录

sample = pd.DataFrame(np.random.randint(low=1,high=9,size=(7,1)),columns=['hhh'])
sample['id'] = [1,1,2,2,3,3,3]
# 输出:

pandas去除重复列的实现方法

问题描述

① 首先我们需要统计每个用户app操作记录数,比如上表可以看出用户id为1的用户有2条操作记录,用户id为3的用户有3条操作记录

s = sample.groupby('id').count()
# 输出:

pandas去除重复列的实现方法

② 此时,S是一个以id为索引,count出来的记录数为value的Series结构。因为考虑到后面我们需要id列进行merge,所以我们需要让id列从索引列变成真实的一列。

s = s.reset_index()
# 输出:

pandas去除重复列的实现方法

③ 将S与最上的data表进行merge,我们不想要看到重复的id列,甚至我们也可以将问题延伸为S与data表不止是id列的重复,还有好多条其他的列的重复,那么如何保证将它们merge之后没有重复列呢?

解决方案

第一想法是用 DataFrame.drop(‘列名') 或者用 del DataFrame[‘列名']

但是如果用该方法,会删除掉所有的重复列,而达不到我们的要求。

办法是: 参考StackOverflow解答

cols_to_use = s.columns.difference(data.columns) # pandas版本在0.15及之上的都可以用这种方法,该方法找出S和data表的不同列,然后再进行merge
pd.merge(data, s[cols_to_use], left_index=True, right_index=True, how='outer')

pandas去除重复列的实现方法

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python 中urls.py:URL dispatcher(路由配置文件)详解
Mar 24 Python
Python使用filetype精确判断文件类型
Jul 02 Python
Python cookbook(数据结构与算法)实现优先级队列的方法示例
Feb 18 Python
Python基于jieba库进行简单分词及词云功能实现方法
Jun 16 Python
django如何连接已存在数据的数据库
Aug 14 Python
python实现定时发送qq消息
Jan 18 Python
python根据txt文本批量创建文件夹
Dec 08 Python
Python数据可视化 pyecharts实现各种统计图表过程详解
Aug 15 Python
面向对象学习之pygame坦克大战
Sep 11 Python
python将三维数组展开成二维数组的实现
Nov 30 Python
python实现交并比IOU教程
Apr 16 Python
使用python求解迷宫问题的三种实现方法
Mar 17 Python
使用Python向C语言的链接库传递数组、结构体、指针类型的数据
Jan 29 #Python
pandas去重复行并分类汇总的实现方法
Jan 29 #Python
spark dataframe 将一列展开,把该列所有值都变成新列的方法
Jan 29 #Python
Python使用ctypes调用C/C++的方法
Jan 29 #Python
dataframe 按条件替换某一列中的值方法
Jan 29 #Python
Numpy之random函数使用学习
Jan 29 #Python
pandas DataFrame 删除重复的行的实现方法
Jan 29 #Python
You might like
php 过滤英文标点符号及过滤中文标点符号代码
2014/06/12 PHP
php使用explode()函数将字符串拆分成数组的方法
2015/02/17 PHP
功能强大的php分页函数
2016/07/20 PHP
linux平台编译安装PHP7并安装Redis扩展与Swoole扩展实例教程
2016/09/30 PHP
PHP常量DIRECTORY_SEPARATOR原理及用法解析
2020/11/10 PHP
js实现ASP分页函数 HTML分页函数
2006/09/22 Javascript
出现“不能执行已释放的Script代码”错误的原因及解决办法
2007/08/29 Javascript
走出JavaScript初学困境—js初学
2008/12/29 Javascript
用Javascript 获取页面元素的位置的代码
2009/09/25 Javascript
jQuery:节点(插入,复制,替换,删除)操作
2013/03/04 Javascript
JS中判断null、undefined与NaN的方法
2014/03/24 Javascript
javascript去掉代码里面的注释
2015/07/24 Javascript
基于OL2实现百度地图ABCD marker的效果
2015/10/01 Javascript
vue.js学习笔记之绑定style样式和class列表
2016/10/31 Javascript
JS日程管理插件FullCalendar中文说明文档
2017/02/06 Javascript
javascript数据类型详解
2017/02/07 Javascript
Vue的Flux框架之Vuex状态管理器
2017/07/30 Javascript
基于vue的短信验证码倒计时demo
2017/09/13 Javascript
使用vue-cli打包过程中的步骤以及问题的解决
2018/05/08 Javascript
layui 图片上传+表单提交+ Spring MVC的实例
2019/09/21 Javascript
[03:34]2014DOTA2西雅图国际邀请赛 淘汰赛7月15日TOPPLAY
2014/07/15 DOTA
python获得linux下所有挂载点(mount points)的方法
2015/04/29 Python
python异常处理之try finally不报错的原因
2020/05/18 Python
很酷的小工具和电子产品商城:GearBest
2016/11/19 全球购物
远程Wi-Fi宠物监控相机:Petcube
2017/04/26 全球购物
Blue Nile蓝色尼罗河香港官网:世界最大在线钻石珠宝销售商
2020/05/07 全球购物
C语言编程题
2015/03/09 面试题
业务员薪酬管理制度
2014/01/15 职场文书
家长评语和期望
2014/02/10 职场文书
节约能源标语
2014/06/17 职场文书
教师党员自我剖析材料
2014/09/29 职场文书
委托函范文
2015/01/29 职场文书
安全主题班会教案
2015/08/12 职场文书
MySQL如何使用使用Xtrabackup进行备份和恢复
2021/06/21 MySQL
Pygame Rect区域位置的使用(图文)
2021/11/17 Python
2007年老电脑安装win11会怎么样? 网友实测win11在老电脑运行良好
2021/11/21 数码科技