2016-03-25 11 views

Odpowiedz

76

UPDATE: użyciu Pandy 0.22.0

Nowsze wersje Pandy mają nowe metody 'DataFrame.isna()' i '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 

lista kolumn:

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

wybrać te kolumny (zawierające co najmniej jeden NaN wartości):

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 

odpowiedź OLD:

spróbuje użyć 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 

lub @root proponowanych bardziej przejrzysta wersja:

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

wybrać podzbiór - wszystkie kolumny zawierające co najmniej jeden NaN wartość:

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

Dzięki za odpowiedź! Szukam uzyskać listę nazw kolumn (odpowiednio zaktualizowałem moje pytanie), czy wiesz jak? – denvar

+1

już w odpowiedzi ln [7] powyżej –

+1

Witam @AzizAlto, tak, odpowiedź została zaktualizowana po aktualizacji mojego własnego pytania. – denvar

4

Można użyć df.isnull().sum(). Pokazuje wszystkie kolumny i całkowite wartości NaN każdego elementu.

Powiązane problemy