Python 在Pandas中使用.notnull()时,正确的语法是什么?
我想在数据帧的几列上使用Python 在Pandas中使用.notnull()时,正确的语法是什么?,python,pandas,dataframe,null,Python,Pandas,Dataframe,Null,我想在数据帧的几列上使用.notnull(),以消除包含“NaN”值的行 假设我有以下df: A B C 0 1 1 1 1 1 NaN 1 2 1 NaN NaN 3 NaN 1 1 我试图使用这种语法,但它不起作用?你知道我做错了什么吗 df[[df.A.notnull()],[df.B.notnull()],[df.C.notnull()]] 我得到这个错误: TypeError: 'Series' objects are mutable, thus t
.notnull()
,以消除包含“NaN”值的行
假设我有以下df
:
A B C
0 1 1 1
1 1 NaN 1
2 1 NaN NaN
3 NaN 1 1
我试图使用这种语法,但它不起作用?你知道我做错了什么吗
df[[df.A.notnull()],[df.B.notnull()],[df.C.notnull()]]
我得到这个错误:
TypeError: 'Series' objects are mutable, thus they cannot be hashed
我应该做什么来获得以下输出
A B C
0 1 1 1
有什么想法吗?您可以首先通过
df[['A','B','C']]
选择列的子集,然后应用并指定掩码中的值是否为True
:
print (df[['A','B','C']].notnull())
A B C
0 True True True
1 True False True
2 True False False
3 False True True
print (df[['A','B','C']].notnull().all(1))
0 True
1 False
2 False
3 False
dtype: bool
print (df[df[['A','B','C']].notnull().all(1)])
A B C
0 1.0 1.0 1.0
另一个解决方案是通过以下方式进行评论:
什么是相同的:
print (df.dropna(subset=['A', 'B', 'C'], how='any'))
和表示删除所有行,其中至少有一个
NaN
值。您可以通过将多个条件与&
运算符组合来应用它们(这不仅适用于notnull()
函数)
或者,您可以删除包含NaN
的所有列。不会修改原始数据帧,而是返回一个副本
df.dropna()
df.dropna()
谢谢,这很有意义。。。那么.all()
这是做什么的呢?它与.any()
有什么不同?all
表示检查所有值是否为真,any
表示检查至少一个值是否为真。如果使用all(1)
或any(1)
则表示检查行,因为它与all(axis=1)
或any(axis=1)
相同,您的代码很棒!非常感谢我的朋友很高兴能帮助你!天气真好!您只需执行df.dropna(子集=['A','B','C'])
print (df.dropna(subset=['A', 'B', 'C'], how='any'))
df[(df.A.notnull() & df.B.notnull() & df.C.notnull())]
A B C
0 1.0 1.0 1.0