Python Pandas實現(xiàn)刪除指定行/列數(shù)據(jù)
dropna() 方法過濾任何含有缺失值的行
pandas.DataFrame里,如果一行數(shù)據(jù)有任意值為空,則過濾掉整行,這時候使用dropna()方法是合適的。下面的案例,任意列只要有一個為空數(shù)據(jù),則整行都干掉。但是我們常常遇到的情況,是根據(jù)一個指標(biāo)(一列)數(shù)據(jù)的情況,去過濾行數(shù)據(jù),類似Excel里面的過濾漏斗,怎么辦?
>>> import pandas as pd
>>> data = pd.DataFrame([[1.,6.5,3.],[1.],[],[6.5,3.]],index=list('abcd'),columns=list('def'))
>>> data
d e f
a 1.0 6.5 3.0
b 1.0 NaN NaN
c NaN NaN NaN
d 6.5 3.0 NaN
>>> data.dropna() #任意列只要有一個為空數(shù)據(jù),則整行都干掉
d e f
a 1.0 6.5 3.0dropna() 其他參數(shù)解析
我們引入了dropna()方法的其他參數(shù)。
DataFrame.dropna(axis=0, how='any', thresh=None, subset=None, inplace=False)
參數(shù)說明:
axis:
- axis=0: 刪除包含缺失值的行
- axis=1: 刪除包含缺失值的列
how: 與axis配合使用
- how=‘any’ :只要有缺失值出現(xiàn),就刪除該行或列
- how=‘all’: 所有的值都缺失,才刪除行或列
thresh: axis中至少有thresh個非缺失值,否則刪除。比如 axis=0,thresh=10:標(biāo)識如果該行中非缺失值的數(shù)量小于10,將刪除改行
subset: list,在哪些列中查看是否有缺失值
inplace: 是否在原數(shù)據(jù)上操作。如果為真,返回None,否則返回新的copy,去掉了缺失值
>>> data.dropna(axis=0,subset=['e']) #axis=0,刪除行,在subset的列中進(jìn)行查看
d e f
a 1.0 6.5 3.0
d 6.5 3.0 NaN方法二:替換并刪除,Python pandas 如果某列值為空,過濾刪除所在行數(shù)據(jù)
如上面的data數(shù)據(jù),如果希望“e”列數(shù)值為空NaN時,刪除對應(yīng)行也就是“b、c”行數(shù)據(jù),保留其他行,用dropna()似乎比較麻煩。 這個時候的思路是:
fillna()給空值填充一個數(shù)值(如999999)index.tolist()找出值為填充值所在行的索引drop根據(jù)索引干掉對應(yīng)的行
>>> data['e']=data['e'].fillna(999999)
>>> find_index=data[(data.e==999999)].index.tolist()
>>> find_index
['b', 'c']
>>> data.drop(find_index)
d e f
a 1.0 6.5 3.0
d 6.5 3.0 NaNdrop()函數(shù)
在 pandas 中,刪除指定的行或列最常用的方法是 drop() 函數(shù)。此外,還可以通過 del、pop、條件篩選等方式實現(xiàn)。下面分別介紹。
刪除列
1. 使用 drop 刪除列(推薦)
import pandas as pd
df = pd.DataFrame({'A': [1,2,3], 'B': [4,5,6], 'C': [7,8,9]})
# 刪除單列(不修改原 DataFrame,返回新對象)
df_new = df.drop('B', axis=1)
# 刪除多列
df_new = df.drop(['B', 'C'], axis=1)
# 直接修改原 DataFrame(inplace=True)
df.drop('B', axis=1, inplace=True)2. 使用 columns 參數(shù)(更直觀)
df.drop(columns=['B', 'C'], inplace=True)
3. 使用 del 語句
del df['B'] # 直接刪除列,修改原 DataFrame
4. 使用 pop 方法(會返回刪除的列)
removed_col = df.pop('B') # 刪除列并返回 Series刪除行
1. 按行索引標(biāo)簽刪除
df = pd.DataFrame({'A': [1,2,3], 'B': [4,5,6]}, index=['x', 'y', 'z'])
# 刪除單行
df.drop('y', inplace=True)
# 刪除多行
df.drop(['x', 'z'], inplace=True)2. 按位置刪除(行號)
# 刪除第 2 行(索引為 1) df.drop(df.index[1], inplace=True) # 刪除前 2 行 df.drop(df.index[:2], inplace=True)
3. 按條件刪除行(最常用)
df = pd.DataFrame({'年齡': [18, 25, 30, 22], '分?jǐn)?shù)': [85, 92, 78, 88]})
# 刪除年齡大于 25 的行
df_filtered = df[df['年齡'] <= 25] # 保留條件為 True 的行
# 或者用 drop + 條件索引
df.drop(df[df['年齡'] > 25].index, inplace=True)刪除含缺失值的行/列
1. 刪除所有含 NaN 的行
df.dropna() # 任何一行有 NaN 就刪除 df.dropna(how='all') # 僅當(dāng)一行全為 NaN 才刪除 df.dropna(thresh=2) # 至少保留 2 個非 NaN 值
2. 刪除所有含 NaN 的列
df.dropna(axis=1)
注意事項
inplace=True 會直接修改原 DataFrame,否則返回新對象。
刪除行/列時,如果指定的索引/列名不存在,會報錯??梢蕴砑?nbsp;errors='ignore' 避免:
df.drop('不存在的列', axis=1, errors='ignore')條件刪除更推薦使用布爾索引(df[條件]),而不是 drop,因為可讀性更好。
到此這篇關(guān)于Python Pandas實現(xiàn)刪除指定行/列數(shù)據(jù)的文章就介紹到這了,更多相關(guān)Python Pandas刪除指定數(shù)據(jù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Python中pandas刪除數(shù)據(jù)表中的重復(fù)值的實現(xiàn)
- 詳解如何使用Pandas刪除DataFrame中的非數(shù)字類型數(shù)據(jù)
- pandas刪除重復(fù)數(shù)據(jù)簡單方法
- python?pandas數(shù)據(jù)處理之刪除特定行與列
- pandas刪除某行或某列數(shù)據(jù)的實現(xiàn)示例
- pandas刪除部分?jǐn)?shù)據(jù)后重新生成索引的實現(xiàn)
- Python?pandas找出、刪除重復(fù)的數(shù)據(jù)實例
- pandas數(shù)據(jù)清洗實現(xiàn)刪除的項目實踐
相關(guān)文章
tensorflow訓(xùn)練中出現(xiàn)nan問題的解決
本篇文章主要介紹了tensorflow訓(xùn)練中出現(xiàn)nan問題的解決,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-02-02
PyQt5 QTreeWidget 樹形結(jié)構(gòu)遞歸遍歷當(dāng)前所有節(jié)點的實現(xiàn)
Qt中實現(xiàn)樹形結(jié)構(gòu)可以使用QTreeWidget類,也可以使用QTreeView類,本文主要介紹了PyQt5 QTreeWidget 樹形結(jié)構(gòu)遞歸遍歷當(dāng)前所有節(jié)點的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-11-11
修改Python的pyxmpp2中的主循環(huán)使其提高性能
這篇文章主要介紹了修改Python的pyxmpp2中的主循環(huán)使其提高性能,pyxmpp2是Python中使用需XMPP協(xié)議的一個常用工具,要的朋友可以參考下2015-04-04
Python數(shù)據(jù)可視化實現(xiàn)多種圖例代碼詳解
這篇文章主要介紹了Python數(shù)據(jù)可視化實現(xiàn)多種圖例代碼詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-07-07
python numpy之np.random的隨機(jī)數(shù)函數(shù)使用介紹
這篇文章主要介紹了python numpy之np.random的隨機(jī)數(shù)函數(shù)使用介紹,需要的朋友可以參考下2019-10-10
人機(jī)交互程序 python實現(xiàn)人機(jī)對話
這篇文章主要為大家詳細(xì)介紹了人機(jī)交互程序,初步實現(xiàn)python人機(jī)對話,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-11-11
python中利用Future對象回調(diào)別的函數(shù)示例代碼
最近在學(xué)習(xí)python,所以這篇文章主要給大家介紹了關(guān)于在python中利用Future對象回調(diào)別的函數(shù)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)下吧。2017-09-09

