2016-03-25 12 views

Antwort

76

UPDATE: mit Pandas 0.22.0

Neuere Pandas Versionen haben neue Methoden 'DataFrame.isna()' und '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 

als Liste der Spalten:

In [74]: df.columns[df.isna().any()].tolist() 
Out[74]: ['a', 'b'] 

die Spalten (mit mindestens einem NaN-Wert) wählen:

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 

ALTE Antwort:

Versuchen zu verwenden 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 

oder als @root vorgeschlagen Klarere Version:

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'] 

eine Untergruppe wählen - alle Spalten mindestens ein NaN Wert enthält:

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 
+0

Danke für die Antwort! Ich suche nach einer Liste der Spaltennamen (ich habe meine Frage entsprechend aktualisiert), weißt du wie? – denvar

+1

bereits in der Antwort ln [7] oben –

+1

Hallo @AzizAlto, ja die Antwort wurde aktualisiert, nachdem ich meine eigene Frage aktualisiert habe. – denvar

4

Sie können df.isnull().sum() verwenden. Es zeigt alle Spalten und die gesamten NaNs jedes Merkmals an.

Verwandte Themen