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

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

我可以得到一个Dataframe,其中所有列值都不够NA:

df[df.interesting_column.notna()]

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

我意识到这可能是令人尴尬的简单.我已经尝试了很多.loc变种,加入/合并各种配置,我没有到达任何地方.

在我对这件事做一个for循环之前的任何指针都将不胜感激.

最佳答案 您可以简单地使用条件的组合:

df[df.interesting_column.notna() & (df.isnull().sum(axis=1) == len(df.columns) - 1)]

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

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

点赞