我有一个数据框:
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”下)
最佳答案
将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
关于python - 如果所有行均为NULL,如何添加新的 bool 列?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55537637/