当且仅当特定列的值丢失时,如何删除行?

2024-10-11 16:24:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要通过删除特定的行或列来处理缺少的值。我知道如何删除缺少值的列或行,但我需要的是一点不同。当且仅当两个特定列缺少值时,我需要删除行

以下是我尝试过的示例:

# Basic libraries
import os
import pandas as pd
import numpy as np

data_dict = {'First':[100, 90, np.nan, np.nan], 
        'Second': [30, 45, 56, np.nan], 
        'Third':[np.nan, 40, 80, np.nan],
        'Forth': [30,40,50,np.nan]}

df1 = pd.DataFrame(data_dict)
df1.dropna(subset=['First','Second'],inplace=True)
df1

如图所示,我试图删除First==NanSecond==Nan所在的行。换句话说,我需要两个条件都是正确的。因此,我只需要删除最后一行,其中两个值均为Nan。因此,第2行不会被删除,因为满足了其中一个条件。不幸的是,如果满足其中一个条件,我使用的命令将删除这些行


1条回答
网友
1楼 · 发布于 2024-10-11 16:24:49

^{}中使用how='all'参数,因为默认值为how='any',所以不工作:

how: {'any', 'all'}, default 'any'
Determine if row or column is removed from DataFrame, when we have at least one NA or all NA.
'any' : If any NA values are present, drop that row or column.
'all' : If all values are NA, drop that row or column.

df1.dropna(subset=['First','Second'],inplace=True, how='all')
print (df1)
   First  Second  Third  Forth
0  100.0    30.0    NaN   30.0
1   90.0    45.0   40.0   40.0
2    NaN    56.0   80.0   50.0

编辑:对于pass变量列表,请使用:

list_columns = ['First','Second','Third','Forth']
df1.dropna(subset=list_columns,inplace=True, how='all')

相关问题 更多 >

    热门问题