Pandas删除数据的几种情况(小结)
技术  /  管理员 发布于 7年前   116
开始之前,pandas中DataFrame删除对象可能存在几种情况
1、删除具体列
2、删除具体行
3、删除包含某些数值的行或者列
4、删除包含某些字符、文字的行或者列
本文就针对这四种情况探讨一下如何操作。
数据准备
模拟了一份股票交割的记录。
In [1]: import pandas as pdIn [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]: dfOut[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 证券卖出 中国联通
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
122 在
学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..123 在
Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..原梓番博客 在
在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..博主 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..1111 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
Copyright·© 2019 侯体宗版权所有·
粤ICP备20027696号