2015-04-30 16 views
30

Tôi có DataFrame thực sự lớn và tôi đã tự hỏi nếu có một cách ngắn (một hoặc hai lót) để có được số lượng mục nhập không phải NaN trong DataFrame. Tôi không muốn làm điều này một cột tại một thời điểm khi tôi có gần 1000 cột.Đếm số mục nhập không phải là NaN trong mỗi cột của Dataframe

df1 = pd.DataFrame([(1,2,None),(None,4,None),(5,None,7),(5,None,None)], 
        columns=['a','b','d'], index = ['A', 'B','C','D']) 

    a b d 
A 1 2 NaN 
B NaN 4 NaN 
C 5 NaN 7 
D 5 NaN NaN 

Output:

a: 3 
b: 2 
d: 1 
+0

df1 [df1.notnull()] đếm() điều này dường như đã làm việc – cryp

+2

Việc lập chỉ mục bổ sung bằng 'df1.notnull()' là không cần thiết vì 'đếm' bỏ qua giá trị null. –

+0

Không giống như 'series.value_counts (..., dropna = False)', không có tùy chọn nào trên 'df.count()' để trực tiếp nhận số NA. – smci

Trả lời

44

Phương pháp count() trả về số NaN giá trị phi trong mỗi cột:

>>> df1.count() 
a 3 
b 2 
d 1 
dtype: int64 

Tương tự, count(axis=1) trả về số NaN giá trị phi trong từng hàng.

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