pandas删除某大于 数_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
    点赞
  • 0
    评论
  • 1
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

打赏
文章很值,打赏犒劳作者一下
表情包
插入表情
评论将由博主筛选后显示,对所有人可见 | 还能输入1000个字符
相关推荐
©️2020 CSDN 皮肤主题: 1024 设计师:白松林 返回首页

打赏

weixin_39613692

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者