Pandas - 如果dataFrame的所有值都是NaN

时间:2017-04-19 07:27:17

标签: python pandas dataframe nan

如何创建执行以下操作的if语句:

 if all values in dataframe are nan:
     do something 
 else: 
     do something else

根据this post,可以检查DataFrame的所有值是否为NaN。我知道有人做不到:

if df.isnull().all():
    do something

它返回以下错误:

  

ValueError:系列的真值是不明确的。使用a.empty,   a.bool(),a.item(),a.any()或a.all()。

1 个答案:

答案 0 :(得分:9)

需要另一个SQL> drop table p23 cascade constraints; Table dropped. SQL> desc t23 Name Null? Type ----------------------------------------- -------- ---------------------------- COLA NUMBER COLB NUMBER COLC NUMBER GENDER VARCHAR2(1) ID NUMBER SQL> select * from v23 2 / select * from v23 * ERROR at line 1: ORA-04063: view "FOX.V23" has errors SQL> ,因为首先all返回all而另一个Series

scalar

样品:

if df.isnull().all().all():
    do something

如果需要更快的解决方案 - numpy.isnannumpy.all,但首先将values的所有值转换为df = pd.DataFrame(index=range(5), columns=list('abcde')) print (df) a b c d e 0 NaN NaN NaN NaN NaN 1 NaN NaN NaN NaN NaN 2 NaN NaN NaN NaN NaN 3 NaN NaN NaN NaN NaN 4 NaN NaN NaN NaN NaN print (df.isnull()) a b c d e 0 True True True True True 1 True True True True True 2 True True True True True 3 True True True True True 4 True True True True True print (df.isnull().all()) a True b True c True d True e True dtype: bool print (df.isnull().all().all()) True if df.isnull().all().all(): print ('do something')

numpy array

<强>计时

print (np.isnan(df.values).all())
True