ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Python3教程:Pandas模块删除数据的几种情况

2022-07-07 21:04:04  阅读:196  来源: 互联网

标签:教程 df Python3 买入 证券 卖出 Pandas 500 2018


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

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

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

'''
学习中遇到问题没人解答?小编创建了一个Python学习交流群:711312441
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
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  证券卖出  中国联通

标签:教程,df,Python3,买入,证券,卖出,Pandas,500,2018
来源: https://www.cnblogs.com/python1111/p/16456106.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有