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

开始之前,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 证券卖出 中国联通

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

(0)

相关推荐

  • Pandas:Series和DataFrame删除指定轴上数据的方法

    如下所示: import numpy as np import pandas as pd from pandas import Series,DataFrame 一.drop方法:产生新对象 1.Series o = Series([1,3,4,7],index=['d','c','b','a']) print(o.drop(['d','b'])) c 3 a 7 dtype: int64 2.DataFrame data = {'水果':['苹果','梨','草莓'], '数量':[3,2,5

  • pandas 数据归一化以及行删除例程的方法

    如下所示: #coding:utf8 import pandas as pd import numpy as np from pandas import Series,DataFrame # 如果有id列,则需先删除id列再进行对应操作,最后再补上 # 统计的时候不需要用到id列,删除的时候需要考虑 # delete row def row_del(df, num_percent, label_len = 0): #print list(df.count(axis=1)) col_num = l

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

    开始之前,pandas中DataFrame删除对象可能存在几种情况 1.删除具体列 2.删除具体行 3.删除包含某些数值的行或者列 4.删除包含某些字符.文字的行或者列 本文就针对这四种情况探讨一下如何操作. 数据准备 模拟了一份股票交割的记录. In [1]: import pandas as pd In [2]: data = { ...: '证券名称' : ['格力电器','视觉中国','成都银行','中国联通','格力电器','视觉中国','成都银行','中国联通'], ...: '摘要

  • .net webapi接收xml格式数据的3种情况小结

    前言 ASP.NET Web API是​​一个框架,可以很容易构建达成了广泛的HTTP服务客户端,包括浏览器和移动设备.是构建RESTful应用程序的理想平台的.NET框架. 本文主要给大家介绍了关于.net webapi接收xml格式数据的相关内容,下面话不多说了,来一起看看详细的介绍吧 webapi 接收 xml 的三种方法 前段时间接到一个任务写一个小接口,要接收java端返回过来的短信xml数据. 刚拿到项目,我的第一想法是对方会以什么形式发送xml格式的数据给我呢,设想三种情况. 我一

  • pandas创建DataFrame的7种方法小结

    笔者在学习pandas,在学习过程中总结了一下创建dataframe的方法,通过查阅资料总结遗下几种方法,如果你有其他的方法欢迎留言补充. 练习代码 请点击此处下载 学习环境: 第一种: 用Python中的字典生成 第二种: 利用指定的列内容.索引以及数据 第三种:通过读取文件,可以是json,csv,excel等等. 本文例子就用excel, 上篇博客笔者已经用csv举例了.这里要注意,如果用excel请先安装xlrd这个包 这个文件笔者放在代码同目录 第四种:用numpy中的array生成

  • MySQL删除表的三种方式(小结)

    drop table drop 是直接删除表信息,速度最快,但是无法找回数据 例如删除 user 表: drop table user; truncate (table) truncate 是删除表数据,不删除表的结构,速度排第二,但不能与where一起使用 例如删除 user 表: truncate table user; delete from delete 是删除表中的数据,不删除表结构,速度最慢,但可以与where连用,可以删除指定的行 例如删除user表的所有数据 delete fro

  • 遍历json获得数据的几种方法小结

    Json在Web开发的用处非常广泛,作为数据传递的载体,如何解析Json返回的数据是非常常用的.下面介绍下四种解析Json的方式: Part 1 var list1 = [1,3,4]; alert(list1[1]); var list2 = [{"name":"leamiko","xing":"lin"}]; alert(list2[0]["xing"]) alert(list2[0].xing) Pa

  • C++ 删除字符串的2种方法小结

    C++实现删除给定字符串的给定字符串思路主要有这么几种实现方式: 1.KMP算法 2.用STL的string的 find,然后用erase 3.用C的strstr找到字串位置,然后用strncpy写到新串中 4.用boost库,用正则表达式 测试过的完整代码: 第一种方法: #include<iostream> #include <string> using namespace std; void deletestr(const char *str, const char* sub

  • Pandas提取数据的三种方式

    目录 前言 Pandas读取数据的几种方式 1. read_csv 2. read_excel 3. read_sql 前言 快期末了,数据挖掘的大作业需要用到python的相关知识(这太难为我这个以前主学C++的人了,不过没办法还是得学),下面是我在使用pandas时总结的一些东西,我对于python不是很熟悉,如果下面的一些知识点有哪里出问题或者有不同理解的,请一定一定要在评论区提出来,让我这个菜鸡学习学习~~/(ㄒoㄒ)/~~ Pandas读取数据的几种方式 Pandas需要先读取表格类型

  • postgresql 删除重复数据的几种方法小结

    在使用PG数据库的这段时间,总结了三种删除重复数据的方法,其中最容易想到的就是最常规的删除方法,但此方法性能较差,删数据耗时较久,虽容易实现,但性能太差,影响写数据的速率. 另外就是被使用的group by删除方法,效率较高. 还有一种是刚发现的,还没有验证,现在就总结下这三种删除方法,并验证各自的执行效率. 首先创建一张基础表,并插入一定量的重复数据. test=# create table deltest(id int, name varchar(255)); CREATE TABLE te

  • SpringMVC接收java.util.Date类型数据的2种方式小结

    SpringMVC接收java.util.Date类型数据 在Controller中如下定义方法 public PassQueryRequest trade(@ModelAttribute PassQueryRequest tradeRequest, @RequestParam(value="startDate", required=true)Date startDate, @RequestParam(value="endDate", required=true)D

  • js 删除数组的几种方法小结

    var arr=['a','b','c']; 若要删除其中的'b',有两种方法: 1.delete方法:delete arr[1] 这种方式数组长度不变,此时arr[1]变为undefined了,但是也有好处原来数组的索引也保持不变,此时要遍历数组元素可以才用 for(index in arr) { document.write('arr['+index+']='+arr[index]); } 这种遍历方式跳过其中undefined的元素 * 该方式IE4.o以后都支持了 2.数组对象splic

随机推荐