2016-03-25 30 views

Trả lời

76

UPDATE: sử dụng Pandas 0.22.0

Mới hơn phiên bản Pandas có phương pháp mới 'DataFrame.isna()''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 

như danh sách các cột:

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

để chọn các cột (có chứa ít nhất một NaN giá trị):

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 

câu trả lời OLD:

Cố gắng sử dụng 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 

hoặc như @root đề xuất phiên bản rõ ràng hơn:

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

để chọn một tập hợp con - tất cả các cột có chứa ít nhất một NaN giá trị:

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

Cảm ơn bạn đã trả lời! Tôi đang tìm kiếm để có được một danh sách các tên cột (tôi cập nhật câu hỏi của tôi cho phù hợp), bạn có biết làm thế nào? – denvar

+1

đã có câu trả lời ln [7] ở trên –

+1

Xin chào @AzizAlto, có câu trả lời đã được cập nhật sau khi tôi cập nhật câu hỏi của riêng mình. – denvar

4

Bạn có thể sử dụng df.isnull().sum(). Nó hiển thị tất cả các cột và tổng số NaN của mỗi đối tượng địa lý.

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