如果所有行均为NULL,如何添加新的布尔列?

时间:2019-04-05 14:28:00

标签: python pandas

我有一个数据框:

Out[8]: 
   0    1    2
0  0    1.0  2.0
1  NaN  NaN  NaN
2  0    0.0  NaN
3  0    1.0  2.0
4  0    1.0  2.0

我想添加一个新的布尔列“ abc”,如果该行具有所有NaN,则“ abc”为“ true”,否则为“ abc”为“ false”,例如:

   0    1    2      abc
0  0    1.0  2.0    false
1  NaN  NaN  NaN    true
2  0    0.0  NaN    false
3  0    1.0  2.0    false
4  0    1.0  2.0    false

这是我用于检查行的代码

def check_null(df):
        return df.isnull().all(axis=1)

它返回我想要的一部分:

check_null(df)
Out[10]: 
0    false
1    true
2    false
3    false
4    false
dtype: bool

所以,我的问题是,如何在其中添加“ abc”作为新列? 我尝试过

df['abc'] = df.apply(check_null, axis=0)

它显示:

  

ValueError :(“对象类型没有命名为1的轴,'发生在索引0')

1 个答案:

答案 0 :(得分:4)

isnaall一起使用

df.isna().all(axis = 1)
Out[121]: 
0    False
1     True
2    False
3    False
4    False
dtype: bool

您不需要应用

def check_null(df):
    return df.isnull().all(axis=1)
check_null(df)
Out[123]: 
0    False
1     True
2    False
3    False
4    False
dtype: bool

如果您确实想要apply,则需要更改功能,删除axis= 1

def check_null(df):
    return df.isnull().all()
df.apply(check_null,1)
Out[133]: 
0    False
1     True
2    False
3    False
4    False
dtype: bool