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 optparse模块使用实例
Apr 09 Python
python安装Scrapy图文教程
Aug 14 Python
Python实现的矩阵类实例
Aug 22 Python
详解python实现数据归一化处理的方式:(0,1)标准化
Jul 17 Python
对django2.0 关联表的必填on_delete参数的含义解析
Aug 09 Python
解决Django migrate不能发现app.models的表问题
Aug 31 Python
Python 复平面绘图实例
Nov 21 Python
Python标准库shutil模块使用方法解析
Mar 10 Python
python mysql自增字段AUTO_INCREMENT值的修改方式
May 18 Python
Pytorch转keras的有效方法,以FlowNet为例讲解
May 26 Python
Python模拟登入的N种方式(建议收藏)
May 31 Python
解决python3输入的坑——input()
Dec 05 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
搜索和替换文件或目录的一个好类--很实用
2006/10/09 PHP
PHP字符编码问题之GB2312 VS UTF-8解决方法
2011/06/23 PHP
深入解析PHP中的(伪)多线程与多进程
2013/07/01 PHP
php获取网卡的MAC地址支持WIN/LINUX系统
2014/04/30 PHP
详解PHP编码转换函数应用技巧
2016/10/22 PHP
php mysql like 实现多关键词搜索的方法
2016/10/29 PHP
JavaScript入门教程(11) js事件处理
2009/01/31 Javascript
常见JS效果之图片减速度滚动实现代码
2011/12/08 Javascript
JS TextArea字符串长度限制代码集合
2012/10/31 Javascript
关于原生js中bind函数的简单实现
2016/08/10 Javascript
xtemplate node.js 的使用方法实例解析
2016/08/22 Javascript
javaScript+turn.js实现图书翻页效果实例代码
2017/02/16 Javascript
详解vue-cli + webpack 多页面实例配置优化方法
2017/07/13 Javascript
vue项目优化之通过keep-alive数据缓存的方法
2017/12/11 Javascript
js判断文件类型大小并给出提示的实现方法
2018/01/03 Javascript
讲解vue-router之命名路由和命名视图
2018/05/28 Javascript
通过npm或yarn自动生成vue组件的方法示例
2019/02/12 Javascript
vue下的@change事件的实现
2019/10/25 Javascript
vue开发简单上传图片功能
2020/06/30 Javascript
JS出现404错误原理及解决方案
2020/07/01 Javascript
python迭代器实例简析
2014/09/25 Python
python中异常捕获方法详解
2017/03/03 Python
Python cookbook(字符串与文本)在字符串的开头或结尾处进行文本匹配操作
2018/04/20 Python
python复制文件到指定目录的实例
2018/04/27 Python
python实现得到当前登录用户信息的方法
2019/06/21 Python
python多进程(加入进程池)操作常见案例
2019/10/21 Python
pytorch的batch normalize使用详解
2020/01/15 Python
pycharm快捷键汇总
2020/02/14 Python
TensorFlow中如何确定张量的形状实例
2020/06/23 Python
用HTML5中的Canvas结合公式绘制粒子运动的教程
2015/05/08 HTML / CSS
大学生创业计划书的用途
2014/01/08 职场文书
办公自动化毕业生求职信
2014/03/09 职场文书
2015年教师自我评价范文
2015/03/04 职场文书
2015年乡镇民政工作总结
2015/05/13 职场文书
2015年艾滋病防治工作总结
2015/05/22 职场文书
护士工作心得体会
2016/01/25 职场文书