使用 isna() 过滤数据框以过滤以下列中具有空值的我们的行

filter dataframe using isna() to filter ourt rows that have null value in following columns

我有与此类似的数据框:

     id     name    val1_rain   val2_tik    val3_bon   val4_tig ...
0   2349    Rivi    0.11       0.34            0.78       0.21
1   3397    Mani    NaN        NaN             NaN        NaN
2   0835    Pigi    0.34       NaN             0.32       NaN
3   5093    Tari    0.65       0.12            0.34       2.45
4   2340    Yoti    NaN        NaN             NaN        NaN

我想删除名称列 ([:,2:]) 之后所有列的所有空值的任何行。 所以结果输出看起来像这样:

     id     name    val1_rain   val2_tik    val3_bon   val4_tig ...
0   2349    Rivi    0.11       0.34            0.78       0.21
2   0835    Pigi    0.34       NaN             0.32       NaN
3   5093    Tari    0.65       0.12            0.34       2.45

我试过这样做:

df[~df.iloc[:,2:].isnull()]

但这引发了一个错误:

ValueError: cannot reindex from a duplicate axis

首先,我不确定为什么错误会提到重复轴。

然后,我想找到一种方法,我可以只拥有在第 2 列之后的任何列中具有任何值的行。

我还没有找到类似的问题。

如果第二列后至少存在一个非缺失值,您可以使用 DataFrame.notna and DataFrame.any:

进行过滤
df = df[df.iloc[:,2:].notna().any(axis=1)]
print (df)
     id  name  val1_rain  val2_tik  val3_bon  val4_tig
0  2349  Rivi       0.11      0.34      0.78      0.21
2   835  Pigi       0.34       NaN      0.32       NaN
3  5093  Tari       0.65      0.12      0.34      2.45