我有一个包含很多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
两个条件一起意味着列中的条目是唯一非空的条目.