besoin d'un autre all
, parce que d'abord all
retour Series
et un autre scalar
:
if df.isnull().all().all():
do something
Exemple:
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')
Si besoin solution plus rapide - numpy.isnan
avec numpy.all
, mais d'abord convertir toutes les valeurs à numpy array
par values
:
print (np.isnan(df.values).all())
True
minutage:
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