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中执行shell命令的几个方法小结
Sep 18 Python
PHP魔术方法__ISSET、__UNSET使用实例
Nov 25 Python
Python序列之list和tuple常用方法以及注意事项
Jan 09 Python
python发送邮件实例分享
Jul 28 Python
Pandas 数据框增、删、改、查、去重、抽样基本操作方法
Apr 12 Python
Python实现手写一个类似django的web框架示例
Jul 20 Python
python退出命令是什么?详解python退出方法
Dec 10 Python
python基于itchat模块实现微信防撤回
Apr 29 Python
选择python进行数据分析的理由和优势
Jun 25 Python
Django 实现图片上传和显示过程详解
Jul 18 Python
深入浅析Python 命令行模块 Click
Mar 11 Python
Python基于模块Paramiko实现SSHv2协议
Apr 28 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的面试题集
2006/11/19 PHP
如何从一个php文件向另一个地址post数据,不用表单和隐藏的变量的
2007/03/06 PHP
如何让搜索引擎抓取AJAX内容解决方案
2014/08/25 PHP
PHP实现正则表达式分组捕获操作示例
2018/02/03 PHP
PHP实现的策略模式示例
2019/03/20 PHP
Laravel获取当前请求的控制器和方法以及中间件的例子
2019/10/11 PHP
JQuery之拖拽插件实现代码
2011/04/14 Javascript
JQuery实现倒计时按钮的实现代码
2012/03/23 Javascript
jQuery动画效果-fadeIn fadeOut淡入浅出示例代码
2013/08/28 Javascript
js借助ActiveXObject实现创建文件
2013/09/29 Javascript
jquery分隔Url的param方法(推荐)
2016/05/25 Javascript
jquery中的常见问题及快速解决方法小结
2016/06/14 Javascript
vue+axios新手实践实现登陆的示例代码
2018/06/06 Javascript
vue中如何让子组件修改父组件数据
2018/06/14 Javascript
JavaScript实现多态和继承的封装操作示例
2018/08/20 Javascript
Python中请使用isinstance()判断变量类型
2014/08/25 Python
分析用Python脚本关闭文件操作的机制
2015/06/28 Python
Python抓取百度查询结果的方法
2015/07/08 Python
在Django中使用Sitemap的方法讲解
2015/07/22 Python
python Django批量导入数据
2016/03/25 Python
Django Admin中增加导出CSV功能过程解析
2019/09/04 Python
Python使用urllib模块对URL网址中的中文编码与解码实例详解
2020/02/18 Python
基于python实现地址和经纬度转换
2020/05/19 Python
关于HTML5的22个初级技巧(图文教程)
2012/06/21 HTML / CSS
墨尔本最受欢迎的复古风格品牌:Princess Highway
2018/12/21 全球购物
介绍一下木马病毒的种类
2015/07/26 面试题
介绍一下Linux文件的记录形式
2013/09/29 面试题
应届行政管理专业个人自我评价
2013/12/28 职场文书
记账会计岗位职责
2014/06/16 职场文书
财会专业大学生求职信
2014/09/26 职场文书
2014年就业工作总结
2014/11/26 职场文书
实习推荐信格式模板
2015/03/27 职场文书
2015年酒店年度工作总结
2015/05/23 职场文书
开场白怎么写
2015/06/01 职场文书
2016感恩母亲节校园广播稿
2015/12/17 职场文书
vue数据字典取键值项目的字典问题
2022/04/12 Vue.js