需要另一個all
,因爲第一all
回報Series
和另一scalar
:
if df.isnull().all().all():
do something
樣品:
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.isnan
與numpy.all
,而是首先通過values
所有值轉換爲numpy array
:
print (np.isnan(df.values).all())
True
時序:
df = pd.DataFrame(np.full((1000,1000), np.nan))
print (df)
In [232]: %timeit (np.isnan(df.values).all())
1000 loops, best of 3: 1.23 ms per loop
In [233]: %timeit (df.isnull().all().all())
100 loops, best of 3: 10 ms per loop
In [234]: %timeit (df.isnull().values.all())
1000 loops, best of 3: 1.46 ms per loop