首页 > 解决方案 > 如何选择只有一个元素非 nan 值的行,其余的都是 NaN?

问题描述

我正在尝试从数据框中提取只有元素 no-Nan 的行,其余的为 None。例如 :

    A   B   C
0   NaN NaN   2
1 NaN   3 NaN
2 NaN   4   5
3 NaN NaN NaN

对于这个数据框示例,它应该返回第一行。我尝试了这段代码,但它不起作用:

df_table.isnull(df_table[cols]).all(axis=1)

谢谢!

标签: pythonpandasdataframe

解决方案


使用sum代替all

df.loc[df.notnull().sum(1)==1]

要获取非 nan 元素,您可以使用,例如max

df.loc[df.notnull().sum(1)==1].max(1)

或者

df.loc[df.notnull().sum(1)==1].ffill(1).iloc[:,-1]

这使:

0    2.0
1    3.0
dtype: float64

推荐阅读