Pandas:查找特定列不是 NA 但所有其他列的行

Tom*_*per 7 python pandas

我有一个包含很多 NA 值的 DataFrame。我想编写一个查询,该查询返回特定列不是 NA 但所有其他列都是 NA 的行。

我可以得到一个数据框,其中所有列值都不是 NA 很容易:

df[df.interesting_column.notna()]
Run Code Online (Sandbox Code Playgroud)

但是,我无法弄清楚如何然后说“从该 DataFrame 返回的行中,每一列不是 'interesting_column' 的列都是 NA”。我不能使用,.dropna因为所有行和列都将包含至少一个 NA 值。

我意识到这可能非常简单。我尝试了很多.loc变化,在各种配置中加入/合并,但我一无所获。

在我对这件事进行 for 循环之前的任何指针都将不胜感激。

Ami*_*ory 7

您可以简单地使用条件的结合:

df[df.interesting_column.notna() & (df.isnull().sum(axis=1) == len(df.columns) - 1)]
Run Code Online (Sandbox Code Playgroud)
  • df.interesting_column.notna() 检查列是否为非空。

  • df.isnull().sum(axis=1) == len(df.columns) - 1 检查行中的空值数是否为列数减 1

这两个条件一起意味着列中的条目是唯一一个非空的条目。