我有一个数据框:
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')
答案 0 :(得分:4)
将isna
与all
一起使用
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