2017-04-15 12 views
6

Mam ramkę danych, w której niektóre wiersze zawierają brakujące wartości.Wyświetl wiersze z jedną lub kilkoma wartościami NaN w ramce danych pandy

In [31]: df.head() 
Out[31]: 
          alpha1 alpha2 gamma1 gamma2  chi2min 
filename                   
M66_MI_NSRh35d32kpoints.dat 0.8016 0.9283 1.000000 0.074804 3.985599e+01 
F71_sMI_DMRI51d.dat   0.0000 0.0000  NaN 0.000000 1.000000e+25 
F62_sMI_St22d7.dat   1.7210 3.8330 0.237480 0.150000 1.091832e+01 
F41_Car_HOC498d.dat   1.1670 2.8090 0.364190 0.300000 7.966335e+00 
F78_MI_547d.dat    1.8970 5.4590 0.095319 0.100000 2.593468e+01 

Chcę wyświetlić w tych wierszach na ekranie. Jeśli spróbuję uzyskać wersję df.isnull(), otrzymam długą ramkę danych z True i False. Czy istnieje sposób, w jaki mogę wybrać te wiersze i wydrukować je na ekranie?

+0

Możliwy duplikat [Python, Pandy: Powrót tylko te wiersze, które mają brakujących wartości ] (https://stackoverflow.com/questions/30447083/python-pandas-return-only-those-rows-which-have-missing-values) – metersk

Odpowiedz

8

Można użyć any parametrem axis=1 do odprawy przynajmniej jednej True w rzędzie z boolean indexing:

df1 = df[df.isnull().any(axis=1)] 

print (df) 
          alpha1 alpha2 gamma1 gamma2  chi2min 
filename                  
M66_MI_NSRh35d32kpoints.dat 0.8016 0.9283 1.000000 0.074804 3.985599e+01 
F71_sMI_DMRI51d.dat   0.0000 0.0000  NaN 0.000000 1.000000e+25 
F62_sMI_St22d7.dat   1.7210 3.8330 0.237480 0.150000 1.091832e+01 
F41_Car_HOC498d.dat   1.1670 2.8090 0.364190 0.300000 7.966335e+00 
F78_MI_547d.dat    1.8970 5.4590 0.095319  NaN 2.593468e+01 

print (df.isnull()) 
          alpha1 alpha2 gamma1 gamma2 chi2min 
filename              
M66_MI_NSRh35d32kpoints.dat False False False False False 
F71_sMI_DMRI51d.dat   False False True False False 
F62_sMI_St22d7.dat   False False False False False 
F41_Car_HOC498d.dat   False False False False False 
F78_MI_547d.dat    False False False True False 

print (df.isnull().any(axis=1)) 
filename 
M66_MI_NSRh35d32kpoints.dat False 
F71_sMI_DMRI51d.dat    True 
F62_sMI_St22d7.dat    False 
F41_Car_HOC498d.dat   False 
F78_MI_547d.dat     True 
dtype: bool 

df1 = df[df.isnull().any(axis=1)] 
print (df1) 
        alpha1 alpha2 gamma1 gamma2  chi2min 
filename               
F71_sMI_DMRI51d.dat 0.000 0.000  NaN  0.0 1.000000e+25 
F78_MI_547d.dat  1.897 5.459 0.095319  NaN 2.593468e+01 
+0

Dzięki. Co oznacza to '(1)'? – Peaceful

+1

jest to "axis = 1", lepiej jest go dodać. – jezrael

+1

oś: {0 lub 'indeks', 1 lub 'kolumny'} lub krotki/lista Podaj krotkę lub listę, aby upuścić na wielu osiach –

Powiązane problemy