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 相关文章推荐
Tensorflow环境搭建的方法步骤
Feb 07 Python
python实现剪切功能
Jan 23 Python
在Python中,不用while和for循环遍历列表的实例
Feb 20 Python
Python异步操作MySQL示例【使用aiomysql】
May 16 Python
Python pandas.DataFrame调整列顺序及修改index名的方法
Jun 21 Python
在python 中split()使用多符号分割的例子
Jul 15 Python
python将字母转化为数字实例方法
Oct 04 Python
在pytorch中动态调整优化器的学习率方式
Jun 24 Python
Keras 在fit_generator训练方式中加入图像random_crop操作
Jul 03 Python
Python 实现3种回归模型(Linear Regression,Lasso,Ridge)的示例
Oct 15 Python
python opencv角点检测连线功能的实现代码
Nov 24 Python
Python+SeaTable实现计算两个日期间的工作日天数
Jul 07 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
DedeCms模板安装/制作概述
2007/03/11 PHP
微信支付开发告警通知实例
2016/07/12 PHP
laravel 解决ajax异步提交数据,并还回填充表格的问题
2019/10/15 PHP
JS实现self的resend
2010/07/22 Javascript
JQuery循环滚动图片代码
2011/12/08 Javascript
使用jQuery validate 验证注册表单实例演示
2013/03/25 Javascript
jquery form 隐藏的input 选择
2014/04/29 Javascript
JavaScript给input的value赋值引发的关于基本类型值和引用类型值问题
2015/12/07 Javascript
javascript实现2016新年版日历
2016/01/25 Javascript
详解javascript new的运行机制
2016/01/26 Javascript
详解JavaScript设计模式开发中的桥接模式使用
2016/05/18 Javascript
JS提示:Uncaught SyntaxError:Unexpected token ) 错误的解决方法
2016/08/19 Javascript
js实现无缝循环滚动
2020/06/23 Javascript
JS实现json的序列化和反序列化功能示例
2017/06/13 Javascript
jQuery选择器之表单元素选择器详解
2017/09/19 jQuery
浅谈微信小程序flex布局基础
2018/09/10 Javascript
vscode中eslint插件的配置(prettier配置无效)
2019/09/10 Javascript
JavaScript代码压缩工具UglifyJS和Google Closure Compiler的基本用法
2020/04/13 Javascript
基于vue和bootstrap实现简单留言板功能
2020/05/30 Javascript
详解JavaScript类型判断的四种方法
2020/10/21 Javascript
element-ui中el-upload多文件一次性上传的实现
2020/12/02 Javascript
详解Vue的异步更新实现原理
2020/12/22 Vue.js
python实现定制交互式命令行的方法
2014/07/03 Python
浅谈MySQL中的触发器
2015/05/05 Python
浅谈Python中的作用域规则和闭包
2018/03/20 Python
python  logging日志打印过程解析
2019/10/22 Python
HTML5 canvas基本绘图之绘制矩形
2016/06/27 HTML / CSS
Html5移动端获奖无缝滚动动画实现示例
2018/06/25 HTML / CSS
电子信息毕业生自荐信
2013/11/16 职场文书
后勤岗位职责
2013/11/26 职场文书
教师岗位职责范本
2013/12/29 职场文书
车辆转让协议书
2014/04/15 职场文书
重阳节慰问信
2015/02/15 职场文书
餐饮店长岗位职责
2015/04/14 职场文书
2015年世界无烟日活动方案
2015/05/04 职场文书
公司周年庆寄语
2019/06/21 职场文书