Pandas删除数据的几种情况(小结)


Posted in Python onJune 21, 2019

开始之前,pandas中DataFrame删除对象可能存在几种情况

1、删除具体列
2、删除具体行
3、删除包含某些数值的行或者列
4、删除包含某些字符、文字的行或者列

本文就针对这四种情况探讨一下如何操作。

数据准备

模拟了一份股票交割的记录。

In [1]: import pandas as pd

In [2]: data = {
  ...:   '证券名称' : ['格力电器','视觉中国','成都银行','中国联通','格力电器','视觉中国','成都银行','中国联通'],
  ...:   '摘要': ['证券买入','证券买入','证券买入','证券买入','证券卖出','证券卖出','证券卖出','证券卖出'],
  ...:   '成交数量' : [500,1000,1500,2000,500,500,1000,1500],
  ...:   '成交金额' : [-5000,-10000,-15000,-20000,5500,5500,11000,15000]
  ...: }
  ...: 

In [3]: df = pd.DataFrame(data, index = ['2018-2-1','2018-2-1','2018-2-1','2018-2-1','2018-2-2','2018-2-2','2018-2-2','2018-2-3'])

In [4]: df
Out[4]: 
     成交数量  成交金额  摘要 证券名称
2018-2-1  500 -5000 证券买入 格力电器
2018-2-1 1000 -10000 证券买入 视觉中国
2018-2-1 1500 -15000 证券买入 成都银行
2018-2-1 2000 -20000 证券买入 中国联通
2018-2-2  500  5500 证券卖出 格力电器
2018-2-2  500  5500 证券卖出 视觉中国
2018-2-2 1000 11000 证券卖出 成都银行
2018-2-3 1500 15000 证券卖出 中国联通

删除具体列

In [5]: df.drop('成交数量',axis=1)
Out[5]: 
      成交金额  摘要 证券名称
2018-2-1 -5000 证券买入 格力电器
2018-2-1 -10000 证券买入 视觉中国
2018-2-1 -15000 证券买入 成都银行
2018-2-1 -20000 证券买入 中国联通
2018-2-2  5500 证券卖出 格力电器
2018-2-2  5500 证券卖出 视觉中国
2018-2-2 11000 证券卖出 成都银行
2018-2-3 15000 证券卖出 中国联通

删除具体行

In [6]: df.drop('2018-2-3')
Out[6]: 
     成交数量  成交金额  摘要 证券名称
2018-2-1  500 -5000 证券买入 格力电器
2018-2-1 1000 -10000 证券买入 视觉中国
2018-2-1 1500 -15000 证券买入 成都银行
2018-2-1 2000 -20000 证券买入 中国联通
2018-2-2  500  5500 证券卖出 格力电器
2018-2-2  500  5500 证券卖出 视觉中国
2018-2-2 1000 11000 证券卖出 成都银行

也可以根据行号删除记录,比如删除第三行

In [22]: df.drop(df.index[7])
Out[22]: 
     成交数量  成交金额  摘要 证券名称
2018-2-1  500 -5000 证券买入 格力电器
2018-2-1 1000 -10000 证券买入 视觉中国
2018-2-1 1500 -15000 证券买入 成都银行
2018-2-1 2000 -20000 证券买入 中国联通
2018-2-2  500  5500 证券卖出 格力电器
2018-2-2  500  5500 证券卖出 视觉中国
2018-2-2 1000 11000 证券卖出 成都银行

注意,这个办法其实不是按照行号删除,而是按照索引删除。如果index为3,则会将前4条记录都删除。这个方法支持一个范围,以及用负数表示从末尾删除。

删除特定数值的行(删除成交金额小于10000)

In [7]: df[ df['成交金额'] > 10000]
Out[7]: 
     成交数量  成交金额  摘要 证券名称
2018-2-2 1000 11000 证券卖出 成都银行
2018-2-3 1500 15000 证券卖出 中国联通

本例其实是筛选,如果需要保留,可以将筛选后的对象赋值给自己即可。

删除某列包含特殊字符的行

In [11]: df[ ~ df['证券名称'].str.contains('联通') ]
Out[11]: 
     成交数量  成交金额  摘要 证券名称
2018-2-1  500 -5000 证券买入 格力电器
2018-2-1 1000 -10000 证券买入 视觉中国
2018-2-1 1500 -15000 证券买入 成都银行
2018-2-2  500  5500 证券卖出 格力电器
2018-2-2  500  5500 证券卖出 视觉中国
2018-2-2 1000 11000 证券卖出 成都银行

如果想取包含某些字符的记录,可以去掉~

In [12]: df[ df['证券名称'].str.contains('联通') ]
Out[12]: 
     成交数量  成交金额  摘要 证券名称
2018-2-1 2000 -20000 证券买入 中国联通
2018-2-3 1500 15000 证券卖出 中国联通

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

Python 相关文章推荐
python实现在windows服务中新建进程的方法
Jun 30 Python
pyqt5 实现多窗口跳转的方法
Jun 19 Python
python retrying模块的使用方法详解
Sep 25 Python
vim自动补全插件YouCompleteMe(YCM)安装过程解析
Oct 21 Python
python使用正则来处理各种匹配问题
Dec 22 Python
pandas和spark dataframe互相转换实例详解
Feb 18 Python
关于Python字符串显示u...的解决方式
Mar 06 Python
为什么相对PHP黑python的更少
Jun 21 Python
python文件编写好后如何实践
Jul 07 Python
python中_del_还原数据的方法
Dec 09 Python
MoviePy简介及Python视频剪辑自动化
Dec 18 Python
pdf论文中python画的图Type 3 fonts字体不兼容的解决方案
Apr 24 Python
pandas.read_csv参数详解(小结)
Jun 21 #Python
pandas 数据结构之Series的使用方法
Jun 21 #Python
解决pyecharts在jupyter notebook中使用报错问题
Apr 23 #Python
用scikit-learn和pandas学习线性回归的方法
Jun 21 #Python
在pyqt5中QLineEdit里面的内容回车发送的实例
Jun 21 #Python
十分钟搞定pandas(入门教程)
Jun 21 #Python
pyqt5 QProgressBar清空进度条的实例
Jun 21 #Python
You might like
php生成excel文件的简单方法
2014/02/08 PHP
Yii视图操作之自定义分页实现方法
2016/07/14 PHP
Js之软键盘实现(js源码)
2007/01/30 Javascript
基于jquery的direction图片渐变动画效果
2010/05/24 Javascript
JS操作select下拉框动态变动(创建/删除/获取)
2013/06/02 Javascript
js单例模式详解实例
2013/11/21 Javascript
javascript面向对象之对象的深入理解
2015/01/13 Javascript
JS树形菜单组件Bootstrap TreeView使用方法详解
2016/12/21 Javascript
canvas实现刮刮卡效果
2017/03/14 Javascript
详解nodejs爬虫程序解决gbk等中文编码问题
2017/04/06 NodeJs
Vue一次性简洁明了引入所有公共组件的方法
2018/11/28 Javascript
使用异步组件优化Vue应用程序的性能
2019/04/28 Javascript
JS使用正则表达式提交页面验证的代码
2019/10/16 Javascript
vue 中固定导航栏的实例代码
2019/11/01 Javascript
写给新手同学的vuex快速上手指北小结
2020/04/14 Javascript
只有 20 行的 JavaScript 模板引擎实例详解
2020/05/11 Javascript
JS可断点续传文件上传实现代码解析
2020/07/30 Javascript
vue中template的三种写法示例
2020/10/21 Javascript
Python实现Tab自动补全和历史命令管理的方法
2015/03/12 Python
Python中第三方库Requests库的高级用法详解
2017/03/12 Python
Python网络编程详解
2017/10/31 Python
python Celery定时任务的示例
2018/03/13 Python
Python3解释器知识点总结
2019/02/19 Python
Python PyInstaller安装和使用教程详解
2020/01/08 Python
Python 删除List元素的三种方法remove、pop、del
2020/11/16 Python
CSS3 完美实现圆角效果
2009/07/13 HTML / CSS
详解HTML5常用的语义化标签
2019/09/27 HTML / CSS
什么是Connection-oriented Protocol/Connectionless Protocol面向连接的协议/无连接协议
2012/09/06 面试题
北大青鸟学生求职信
2013/09/24 职场文书
开业主持词
2014/03/21 职场文书
国庆节促销广告语2014
2014/09/19 职场文书
社区文明创建工作总结2015
2015/04/21 职场文书
离婚起诉书范文2015
2015/05/19 职场文书
公司开业致辞
2015/07/29 职场文书
2019财务转正述职报告
2019/06/27 职场文书
Redis过期数据是否会被立马删除
2022/07/23 Redis