2017-10-18 2 views
0

Ich habe einen Datenrahmen mit leeren Zellen wie folgt aus:Zählen Anzahl der leeren Zellen in Pandas Datenrahmen auf Zeilenebene und erstellen Sie eine Spalte entsprechend

Col1  Col2  Col3  Col4  Col5  
    A     B      C 
            G    
    E   R        P 
         J       
    C   K        T 

ich eine zusätzliche Spalte mit der Nummer erstellen möchten von leere Zellen in jeder Reihe, so dass die erwartete Ausgabe ist wie folgt:

ID  Col1  Col2  Col3  Col4  Col5  No_Of_Empty  
1  A     B      C   2 
2          G      3 
3  E   R        P   2 
4       J         3 
5  C   K        T   3 

Hier ist, was ich versucht:

df['No_Of_Des'] = df.iloc[:,1::].apply(lambda x: sum(x==' '), axis = 1) 

Die Ausgabe, die ich bekomme, ist nicht die erwartete, ich bin mir nicht sicher, was hier falsch ist?

+0

Ist es ' ' '' oder ''''? – Wen

+0

Der, den ich versuche, ist mit Raum innerhalb wie dieser – owise

+0

Versuch, '' '' ohne den Raum – Wen

Antwort

1

Quelle DF:

In [168]: df 
Out[168]: 
    Col1 Col2 Col3 Col4 Col5 
0 A   B   C 
1     G 
2 E R    P 
3    J 
4 C K    T 

Demo:

In [170]: df.iloc[:, 1:].eq("") 
Out[170]: 
    Col2 Col3 Col4 Col5 
0 True False True False 
1 True True False True 
2 False True True False 
3 True False True True 
4 False True True False 

In [171]: df.iloc[:, 1:].eq("").sum(axis=1) 
Out[171]: 
0 2 
1 3 
2 2 
3 3 
4 2 
dtype: int64 

In [172]: df['No_Of_Empty'] = df.iloc[:, 1:].eq("").sum(axis=1) 

In [173]: df 
Out[173]: 
    Col1 Col2 Col3 Col4 Col5 No_Of_Empty 
0 A   B   C   2 
1     G     3 
2 E R    P   2 
3    J      3 
4 C K    T   2 
+0

Ich bin nicht sicher, wenn ich dies anwende ich erhalte einen Fehler bleiben:'TypeError: Konnte [None] mit Block nicht vergleichen values.' – owise

+0

@owise, ich fürchte, ich würde einen reproduzierbaren Datensatz benötigen, um ... – MaxU

+0

haben wir eine kurze Form, um diese Operation so umzukehren, dass wir die Zählung von NON leeren Zellen bekommen? – owise

Verwandte Themen