最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python Pandas實現(xiàn)刪除指定行/列數(shù)據(jù)

 更新時間:2026年04月24日 09:30:50   作者:lucky科技汪  
這篇文章主要為大家詳細(xì)介紹了如何通過Python Pandas實現(xiàn)刪除指定行或列數(shù)據(jù),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下

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.0

dropna() 其他參數(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  NaN

drop()函數(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)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論

漳州市| 丹巴县| 昭苏县| 商南县| 宜良县| 芦山县| 桦川县| 新龙县| 南和县| 泾源县| 清水县| 屯昌县| 双城市| 商水县| 北安市| 长泰县| 潍坊市| 惠州市| 都兰县| 永泰县| 齐齐哈尔市| 榆树市| 如东县| 阿克陶县| 通化县| 潞城市| 涟水县| 溧水县| 金平| 榆树市| 宜君县| 清涧县| 富源县| 凌源市| 和静县| 桑日县| 东台市| 新乐市| 邹城市| 祁东县| 克东县|