Heim > Backend-Entwicklung > Python-Tutorial > Wie lösche ich effizient Zeilen aus einem Pandas-DataFrame basierend auf einem Spaltenwert?

Wie lösche ich effizient Zeilen aus einem Pandas-DataFrame basierend auf einem Spaltenwert?

Mary-Kate Olsen
Freigeben: 2024-12-18 14:06:10
Original
427 Leute haben es durchsucht

How to Efficiently Delete Rows from a Pandas DataFrame Based on a Column Value?

DataFrame-Zeile in Pandas basierend auf dem Spaltenwert löschen

Problem:

Betrachten Sie einen Pandas-DataFrame mit einer Spalte namens line_race . Die Aufgabe besteht darin, alle Zeilen zu entfernen, in denen der Wert in der Spalte „line_race“ gleich 0 ist.

Effiziente Lösung:

Zum effizienten Entfernen von Zeilen basierend auf einem bestimmten Spaltenwert Führen Sie die folgenden Schritte aus:

  1. Importieren Sie die Pandas Bibliothek:

    import pandas as pd
    Nach dem Login kopieren
  2. Erstellen Sie den DataFrame mit den angegebenen Daten:

    data = {
        "line_race": [11, 11, 9, 10, 10, 9, 8, 9, 11, 8, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
        "rating": [56, 67, 66, 83, 88, 52, 66, 70, 68, 72, 65, 70, 64, 70, 70, -1, -1, -1, -1, -1, 69, -1, -1, -1, -1],
        "rw": [1.000000, 1.000000, 1.000000, 0.880678, 0.793033, 0.636655, 0.581946, 0.518825, 0.486226, 0.446667, 0.164591, 0.142409, 0.134800, 0.117803, 0.113758, 0.109852, 0.098919, 0.093168, 0.083063, 0.075171, 0.048690, 0.045404, 0.039679, 0.034160, 0.030915],
        "wrating": [56.000000, 67.000000, 66.000000, 73.096278, 69.786942, 33.106077, 38.408408, 36.317752, 33.063381, 32.160051, 10.698423, 9.968634, 8.627219, 8.246238, 7.963072, -0.109852, -0.098919, -0.093168, -0.083063, -0.075171, 3.359623, -0.045404, -0.039679, -0.034160, -0.030915],
        "line_date": ["2007-03-31", "2007-03-10", "2007-02-10", "2007-01-13", "2006-12-23", "2006-11-09", "2006-10-22", "2006-09-29", "2006-09-16", "2006-08-30", "2006-02-11", "2006-01-13", "2006-01-02", "2005-12-06", "2005-11-29", "2005-11-22", "2005-11-01", "2005-10-20", "2005-09-27", "2005-09-07", "2005-06-12", "2005-05-29", "2005-05-02", "2005-04-02", "2005-03-13", "2004-11-09"]
    }
    
    df = pd.DataFrame(data)
    Nach dem Login kopieren
  3. Filtern Sie den DataFrame mit der Methode query(), was schneller ist als die Verwendung der booleschen Indizierung:

    df_filtered = df.query("line_race != 0")
    Nach dem Login kopieren
  4. Alternativ Sie kann die Methode drop() verwenden, wobei der Inplace-Parameter auf True gesetzt ist:

    df.drop(df.index[df['line_race'] == 0], inplace=True)
    Nach dem Login kopieren
  5. Der gefilterte DataFrame kann dann der ursprünglichen DataFrame-Variable oder einer neuen Variablen zugewiesen werden.

Der aktualisierte DataFrame enthält keine Zeilen mehr, in denen die Spalte „line_race“ gleich 0 ist.

Das obige ist der detaillierte Inhalt vonWie lösche ich effizient Zeilen aus einem Pandas-DataFrame basierend auf einem Spaltenwert?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage