2017-04-15 24 views
6

Tôi có một khung dữ liệu trong đó một số hàng chứa giá trị bị thiếu.Hiển thị các hàng có một hoặc nhiều giá trị NaN trong khung dữ liệu gấu trúc

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 

Tôi muốn hiển thị trên những hàng đó trên màn hình. Nếu tôi thử df.isnull(), nó cung cấp một khung dữ liệu dài với TrueFalse. Có cách nào để tôi có thể chọn những hàng này và in chúng trên màn hình không?

+0

trùng lặp có thể xảy ra của [Python, Pandas: Chỉ trở lại những hàng có giá trị thiếu ] (https://stackoverflow.com/questions/30447083/python-pandas-return-only-those-rows-which-have-missing-values) – metersk

Trả lời

8

Bạn có thể sử dụng any với tham số axis=1 để kiểm tra ít nhất một True trong hàng với 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

Cảm ơn. '(1)' là gì? – Peaceful

+1

nó là 'trục = 1', tốt hơn là thêm nó. – jezrael

+1

trục: {0 hoặc 'chỉ mục', 1 hoặc ‘cột’} hoặc tuple/danh sách của chúng Chuyển tuple hoặc danh sách để thả trên nhiều trục –

Các vấn đề liên quan