Pandas删除数据的几种情况(小结)
开始之前,pandas中DataFrame删除对象可能存在几种情况
1、删除具体列
2、删除具体行
3、删除包含某些数值的行或者列
4、删除包含某些字符、文字的行或者列
本文就针对这四种情况探讨一下如何操作。
数据准备
模拟了一份股票交割的记录。
In[1]:importpandasaspd 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-1500-5000证券买入格力电器 2018-2-11000-10000证券买入视觉中国 2018-2-11500-15000证券买入成都银行 2018-2-12000-20000证券买入中国联通 2018-2-25005500证券卖出格力电器 2018-2-25005500证券卖出视觉中国 2018-2-2100011000证券卖出成都银行 2018-2-3150015000证券卖出中国联通
删除具体列
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-25500证券卖出格力电器 2018-2-25500证券卖出视觉中国 2018-2-211000证券卖出成都银行 2018-2-315000证券卖出中国联通
删除具体行
In[6]:df.drop('2018-2-3') Out[6]: 成交数量成交金额摘要证券名称 2018-2-1500-5000证券买入格力电器 2018-2-11000-10000证券买入视觉中国 2018-2-11500-15000证券买入成都银行 2018-2-12000-20000证券买入中国联通 2018-2-25005500证券卖出格力电器 2018-2-25005500证券卖出视觉中国 2018-2-2100011000证券卖出成都银行
也可以根据行号删除记录,比如删除第三行
In[22]:df.drop(df.index[7]) Out[22]: 成交数量成交金额摘要证券名称 2018-2-1500-5000证券买入格力电器 2018-2-11000-10000证券买入视觉中国 2018-2-11500-15000证券买入成都银行 2018-2-12000-20000证券买入中国联通 2018-2-25005500证券卖出格力电器 2018-2-25005500证券卖出视觉中国 2018-2-2100011000证券卖出成都银行
注意,这个办法其实不是按照行号删除,而是按照索引删除。如果index为3,则会将前4条记录都删除。这个方法支持一个范围,以及用负数表示从末尾删除。
删除特定数值的行(删除成交金额小于10000)
In[7]:df[df['成交金额']>10000] Out[7]: 成交数量成交金额摘要证券名称 2018-2-2100011000证券卖出成都银行 2018-2-3150015000证券卖出中国联通
本例其实是筛选,如果需要保留,可以将筛选后的对象赋值给自己即可。
删除某列包含特殊字符的行
In[11]:df[~df['证券名称'].str.contains('联通')] Out[11]: 成交数量成交金额摘要证券名称 2018-2-1500-5000证券买入格力电器 2018-2-11000-10000证券买入视觉中国 2018-2-11500-15000证券买入成都银行 2018-2-25005500证券卖出格力电器 2018-2-25005500证券卖出视觉中国 2018-2-2100011000证券卖出成都银行
如果想取包含某些字符的记录,可以去掉~
In[12]:df[df['证券名称'].str.contains('联通')] Out[12]: 成交数量成交金额摘要证券名称 2018-2-12000-20000证券买入中国联通 2018-2-3150015000证券卖出中国联通
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。