如果前五列中为 NaN,则删除行

325*_*325 3 python nan python-3.x pandas data-cleaning

我有一个尺寸为 89 行 x 13 列的熊猫数据框。如果出现在前五列中,我想删除整行。这是一个例子。 NaN

LotName     C15   C16  C17  C18  C19 Spots15 Spots16 ...
Cherry St   439   464  555  239  420     101     101 ...
Springhurst NaN   NaN  NaN  NaN  NaN      12      12
Barton Lot   34    24   43   45   39      10       9 ...
Run Code Online (Sandbox Code Playgroud)

在上面的例子中,我想删除Springhurst观察,因为它包含NaN在前五列中。我如何才能在 Python 中做到这一点?

May*_*wal 5

如果要Nan对前 5 列的所有行进行严格检查:

df.iloc[:, :5].dropna(how='all')
Run Code Online (Sandbox Code Playgroud)

解释:

df.iloc[:, :5] : 选择所有行和前 5 列

.dropna(how='all') : 检查一行中的所有值是否都是 NaN

如果要检查Nan5 列中的任何一列:

df.iloc[:, :5].dropna(how='any')
Run Code Online (Sandbox Code Playgroud)

要将其分配回原始 df,您可以执行以下操作:

In [2107]: ix = df.iloc[:, :5].dropna(how='all').index.tolist()

In [2110]: df = df.loc[ix]

In [2111]: df
Out[2111]: 
       LotName    C15    C16    C17    C18  C19  Spots15  Spots16
Cherry      St  439.0  464.0  555.0  239.0  420      101    101.0
Barton     Lot   34.0   24.0   43.0   45.0   39       10      9.0
Run Code Online (Sandbox Code Playgroud)