如何排除缺少列且具有特定值的列的条件?

问题描述

这是东西,我有一个名为df的数据框,看起来像这样:

id        value
NaN       10
NaN       0
ATT       0
ARS       0
ABB       10

我想排除id缺失且值等于零的所有行。

我想要这个:

id        value
NaN       10
ATT       0
ARS       0
ABB       10

我尝试过:

df[pd.isna(df['id']) & df['value']==0]

但是它不起作用,并且排除了超出要求的行。

解决方法

您需要更改(反转逻辑)-选择没有NaN或没有0的所有行,这也是因为优先级运算符为第二个条件添加了()

df = df[df['id'].notna() | (df['value']!=0)]
print (df)
    id  value
0  NaN     10
2  ATT      0
3  ARS      0
4  ABB     10

或使用Series.ne,则不必使用()

df = df[df['id'].notna() | df['value'].ne(0)]
print (df)
    id  value
0  NaN     10
2  ATT      0
3  ARS      0
4  ABB     10

或者可以反转原始蒙版:

df = df[~(df['id'].isna() & (df['value']==0))]
print (df)
    id  value
0  NaN     10
2  ATT      0
3  ARS      0
4  ABB     10

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...