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

yipeiwu_com6年前Python基础

开始之前,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生成与调用cntk模型代码演示方法

用python生成与调用cntk模型代码演示方法

由于一些原因,视频录制要告一段落了。再写一篇关于cntk的文章分享出来吧。我也很想将这个事情进行下去。以后如果条件允许还会接着做。 cntk2.0框架生成的模型才可以支持python。1...

Python配置虚拟环境图文步骤

Python配置虚拟环境图文步骤

使用Python进行项目开发时,由于不同的项目需要,可能会配置多个开发环境,不同开发环境之间的项目依赖包如果混合在一起,可能会引起意想不到的错误,本文主要介绍如何通过虚拟环境隔离不同开发...

Linux系统上Nginx+Python的web.py与Django框架环境

1.编译nginx 在网上买了一本《实战nginx-取代Apache的高性能服务器》,写的比较浅,主要是些配置方面的东西,不过却正是目前我所需要的。由于需要支持https和rewrite...

django DRF图片路径问题的解决方法

django DRF图片路径问题的解决方法

前言 其实就是Django RESTful Framework,RESTful一种API的命名风格,主要因为前后端分离开发出现,前后端分离: 用户访问静态文件的服务器,数据全部由ajax...

python中使用 xlwt 操作excel的常见方法与问题

前言 Python可以操作Excel的模块不止一种,我习惯使用的写入模块是xlwt(一般都是读写模块分开的) python中使用xlwt操作excel非常方,和Java使用调框架apac...