Pandas刪除資料的幾種情況(小結)
更多python教程請到友情連線: 菜鳥教程www.piaodoo.com
人人影視www.sfkyty.com
飛盧小說網www.591319.com
韓劇網www.op-kg.com
興化論壇www.yimoge.cn
星辰影院www.hhsos.net
開始之前,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]: 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 證券賣出 中國聯通
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援菜鳥教程www.piaodoo.com。