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

1、删除具体列

2、删除具体行

3、删除包含某些数值的行或者列

4、删除包含某些字符、文字的行或者列

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

数据准备

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

  1. In [1]: import pandas as pd
  2. In [2]: data = {
  3. ...: '证券名称' : ['格力电器','视觉中国','成都银行','中国联通','格力电器','视觉中国','成都银行','中国联通'],
  4. ...: '摘要': ['证券买入','证券买入','证券买入','证券买入','证券卖出','证券卖出','证券卖出','证券卖出'],
  5. ...: '成交数量' : [500,1000,1500,2000,500,500,1000,1500],
  6. ...: '成交金额' : [-5000,-10000,-15000,-20000,5500,5500,11000,15000]
  7. ...: }
  8. ...:
  9. 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'])
  10. In [4]: df
  11. Out[4]:
  12. 成交数量 成交金额 摘要 证券名称
  13. 2018-2-1 500 -5000 证券买入 格力电器
  14. 2018-2-1 1000 -10000 证券买入 视觉中国
  15. 2018-2-1 1500 -15000 证券买入 成都银行
  16. 2018-2-1 2000 -20000 证券买入 中国联通
  17. 2018-2-2 500 5500 证券卖出 格力电器
  18. 2018-2-2 500 5500 证券卖出 视觉中国
  19. 2018-2-2 1000 11000 证券卖出 成都银行
  20. 2018-2-3 1500 15000 证券卖出 中国联通

删除具体列

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

删除具体行

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

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

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

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

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

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

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

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

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

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

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

参考资料:

1、Dropping Rows And Columns In pandas Dataframe

2、pandas过滤包含特定字符串的行

3、Pandas dataframe怎么删除名称包含特定字符串的列?

4、Pandas Drop

Pandas删除数据的几种情况的更多相关文章

  1. Pandas查询数据的几种方法

    Pandas查询数据 Pandas查询数据的几种方法 df.loc方法,根据行.列的标签值查询 df.iloc方法,根据行.列的数字位置查询 df.where方法 df.query方法 .loc既能查 ...

  2. Solr 删除数据的几种方式

    原文出处:http://blog.chenlb.com/2010/03/solr-delete-data.html 有时候需要删除 Solr 中的数据(特别是不重做索引的系统中,在重做索引期间).删除 ...

  3. .net webapi 接收 xml 格式数据的三种情况

    webapi 接收 xml 的三种方法 前段时间接到一个任务写一个小接口,要接收java端返回过来的短信xml数据. 刚拿到项目,我的第一想法是对方会以什么形式发送xml格式的数据给我呢,设想三种情况 ...

  4. solr删除数据的4种方便快捷的方式

    1.在solr客户端,访问你的索引库(我认为最方便的方法) 1)documents type 选择 XML  2)documents 输入下面语句 <delete><query> ...

  5. MySQL中删除数据的两种方法

    转自:http://blog.csdn.net/apache6/article/details/2778878 1. 在MySQL中有两种方法可以删除数据: 一种是delete语句,另一种是trunc ...

  6. NHibernate 中删除数据的几种方法

    今天下午有人在QQ群上问在NHibernate上如何根据条件删除多条数据,于是我自己就写了些测试代码,并总结了一下NHibernate中删除数据的方式,做个备忘.不过不能保证囊括所有的方式,如果还有别 ...

  7. ASP.NET中GridView控件删除数据的两种方法

      今天在用GridView控件时,发现了一个问题,就是使用GridView控件在删除数据时的问题.接下来我们通过模板列方式和CommandField方式删除某条数据讲解下两者之间的区别. 方式一:通 ...

  8. 总结NHibernate 中删除数据的几种方法

    今天下午有人在QQ群上问在NHibernate上如何根据条件删除多条数据,于是我自己就写了些测试代码,并总结了一下NHibernate中删除数据的方式,做个备忘.不过不能保证囊括所有的方式,如果还有别 ...

  9. js删除数据的几种方法

    js 删除数组几种方法 var arr=['a','b','c']; 若要删除其中的'b',有两种方法: 1.delete方法:delete arr[1] 这种方式数组长度不变,此时arr[1]变为u ...

随机推荐

  1. 关于gitignore无效的一些记录

    git 远程上已经有了 .idea *.iml文件 拉到本地之后,添加.gitignore 此时由于远程有了这些文件,所以.gitignore无法忽略这些文件了 挽救做法: 思路是在本地的git缓存中 ...

  2. java 常用面试题

    基础问题和思想:1.抽象类和接口的区别(单纯的语法区别只能给一半分,要说出来适用场景):2.hashcode()和equals()的关系:3.HashMap(Set)底层机制(用到的数据结构以及代码原 ...

  3. 点击图片查看大图(纯js)

    $(function(){ $(".pimg").click(function(){ var _this = $(this);//将当前的pimg元素作为_this传入函数 img ...

  4. 002.Postfix空客户端配置

    一 空客户端介绍 空客户端必须满足(符合)以下条件: 本地发送的任何邮件都会转发到现有出站邮件中继以进行发送 本地postfix服务不接受任何电子邮件的本地发送 用户可以在空客户端运行邮件客户端来读取 ...

  5. Linux驱动之USB(个人)

                              USB概述 <USB简介> a:背景 USB是Universal Serial Bus的缩写,是一种全新的,双向同步传输的,支持热插拔的 ...

  6. Ⅳ.Catalan数

    Catalan数首先是由Euler在精确计算对凸n边形的不同的对角三角形剖分的个数问题时得到的,它经常出现在组合计数问题中.     问题的提出:在一个凸n边形中,通过不相交于n边形内部的对角线,把n ...

  7. P4810 A’s problem(a)

    P4810 A’s problem(a)From: admin 时间: 1000ms / 空间: 65536KiB / Java类名: Main 背景 清北NOIP春季系列课程 描述 这是一道有背景的 ...

  8. JAVA初学练手项目,学生管理系统

    github地址:https://github.com/qscqesze/StudentManager 简单描述一下: UI层面用于接受用户的处理信息,然后移交给StudentDao去处理数据. 其中 ...

  9. process information unavailable 的解决办法

    有时候在centos上查看java进程时,会遇到process information unavailable 的情况,如下图: 不同账号之间kill进程时,可能会造成这种现象(比如:deploy用户 ...

  10. Open JTAG Project

    Open JTAG Project is an open source hardware and software for a high speed USB JTAG tool. In this si ...