2017-11-20 1 views
1

Wenn ich den folgenden Datenrahmen habe. Wenn in Participation, Homework, Test, Presentation ein Null ist (wenn eine Null eine der vier Spalten ist), möchte ich diese Zeile entfernen. Wie erreiche ich das in Pandas?Entfernen von Zeilen mit Nullwerten in einer beliebigen Teilmenge von Spalten (Pandas)

Name Participation Homework Test Presentation Attendance 
Andrew 92    Null  85 95   88 
John 95    88  98 Null   90 
Carrie 82    99  96 89   92 
Simone 100   91  88 99   90 

Hier würde ich alle außer Carrie und Simone aus dem Datenrahmen entfernen möchten. Wie erreiche ich das in Pandas?

Ich habe das auf Stackoverflow gefunden, was meiner Meinung nach df = df[pd.notnull(df['column_name'])] helfen kann, aber gibt es das überhaupt Ich kann das für alle vier Spalten tun (also eine Teilmenge) statt jeder Spalte einzeln?

Danke!

Antwort

4

Sie können die Ersetzung überspringen wenn Sie verwenden ne:

df[df.ne('Null').all(1)] 

    Name Participation Homework Test Presentation Attendance 
2 Carrie    82  99 96   89   92 
3 Simone   100  91 88   99   90 
3

Vorbereitung, ersetzen wir zuerst die Zeichenfolge 'Null' mit np.nan. Jetzt

, wollen wir versuchen, diese notnull verwenden, all mit Achse = 1:

df[df.replace('Null',np.nan).notnull().all(1)] 

Ausgang:

Name Participation Homework Test Presentation Attendance 
2 Carrie    82  99 96   89   92 
3 Simone   100  91 88   99   90 

Oder isnull verwenden, any und ~:

df[~df.replace('Null',np.nan).isnull().any(1)] 
3

replace + dropna

df.replace({'Null':np.nan}).dropna() 
Out[504]: 
    Name Participation Homework Test Presentation Attendance 
2 Carrie    82  99 96   89   92 
3 Simone   100  91 88   99   90 
Verwandte Themen