UPDATE: usando Pandas 0.22.0
recenti versioni Pandas hanno nuovi metodi 'DataFrame.isna()' e 'DataFrame.notna()'
In [71]: df
Out[71]:
a b c
0 NaN 7.0 0
1 0.0 NaN 4
2 2.0 NaN 4
3 1.0 7.0 0
4 1.0 3.0 9
5 7.0 4.0 9
6 2.0 6.0 9
7 9.0 6.0 4
8 3.0 0.0 9
9 9.0 0.0 1
In [72]: df.isna().any()
Out[72]:
a True
b True
c False
dtype: bool
come elenco di colonne:
In [74]: df.columns[df.isna().any()].tolist()
Out[74]: ['a', 'b']
per selezionare le colonne (contenenti almeno un valore NaN
):
In [73]: df.loc[:, df.isna().any()]
Out[73]:
a b
0 NaN 7.0
1 0.0 NaN
2 2.0 NaN
3 1.0 7.0
4 1.0 3.0
5 7.0 4.0
6 2.0 6.0
7 9.0 6.0
8 3.0 0.0
9 9.0 0.0
risposta OLD:
tenta di utilizzare isnull():
In [97]: df
Out[97]:
a b c
0 NaN 7.0 0
1 0.0 NaN 4
2 2.0 NaN 4
3 1.0 7.0 0
4 1.0 3.0 9
5 7.0 4.0 9
6 2.0 6.0 9
7 9.0 6.0 4
8 3.0 0.0 9
9 9.0 0.0 1
In [98]: pd.isnull(df).sum() > 0
Out[98]:
a True
b True
c False
dtype: bool
o come @root proposto versione più chiara:
In [5]: df.isnull().any()
Out[5]:
a True
b True
c False
dtype: bool
In [7]: df.columns[df.isnull().any()].tolist()
Out[7]: ['a', 'b']
per selezionare un sottoinsieme - tutte le colonne contenenti almeno un NaN
valore:
In [31]: df.loc[:, df.isnull().any()]
Out[31]:
a b
0 NaN 7.0
1 0.0 NaN
2 2.0 NaN
3 1.0 7.0
4 1.0 3.0
5 7.0 4.0
6 2.0 6.0
7 9.0 6.0
8 3.0 0.0
9 9.0 0.0
Grazie per la risposta! Sto cercando di ottenere un elenco dei nomi delle colonne (ho aggiornato la mia domanda di conseguenza), sai come? – denvar
già nella risposta ln [7] sopra –
Ciao @AzizAlto, sì la risposta è stata aggiornata dopo aver aggiornato la mia domanda. – denvar