Pandas/zwei csv vergleichen und streichen

Installation und Anwendung von Datenbankschnittstellen wie SQLite, PostgreSQL, MariaDB/MySQL, der DB-API 2.0 und sonstigen Datenbanksystemen.
Antworten
oldboyJR
User
Beiträge: 81
Registriert: Donnerstag 28. März 2024, 16:19

Ich versuche Pandas zu benutzen um zwei CSV zu vergleichen. Die habe ich mit einem Programm selber generiert und aus Mysql (xampp server intern) exportiert. Als Liste sieht das so aus die man unter irgend einer CSV datei speichern kann
  • "id";"Anrede";"Vorname";"Nachname";"Email";"Strasse";"Nummer";"Ort";"PLZ";"Bundesland";"Kommentare";"Unterstuetzer";"reg_date"
    "1";"Herr";"Otto";"Sauel";"samuel@email";"HAGELBERGERSTR";"9";"bERLIN";"10000";"bERLIN";"haha";"ok";"2024-11-28 11:49:55"
    "2";"Herr";"Reihard";"sauter";"samuel@email";"HAGELBERGERSTR";"9";"bERLIN";"10000";"bERLIN";"haha";"ok";"2024-11-28 12:02:11"
    "3";"Herr";"Bernd";"richard";"samuel@email";"HAGELBERGERSTR";"9";"bERLIN";"10000";"bERLIN";"haha";"ok";"2024-11-28 12:03:32"
    "4";"Herr";"Robby";"Reinersl";"samuel@email";"HAGELBERGERSTR";"9";"bERLIN";"10000";"bERLIN";"haha";"ok";"2024-11-29 09:39:52"
    "5";"Herr";"Rudi";"fenterl";"samuel@email";"HAGELBERGERSTR";"9";"bERLIN";"10000";"bERLIN";"haha";"ok";"2024-11-29 09:46:10"
    "6";"Herr";"Robert";"Swinkler";"samuel@email";"HAGELBERGERSTR";"9";"bERLIN";"10000";"bERLIN";"haha";"ok";"2024-11-29 10:35:22"
    "7";"Herr";"Robert";"Forkerl";"samuel@email";"HAGELBERGERSTR";"9";"bERLIN";"10000";"bERLIN";"haha";"ok";"2024-11-29 12:47:39"
    "8";"Herr";"Robert";"Svolkerl";"samuel@email";"HAGELBERGERSTR";"9";"bERLIN";"10000";"bERLIN";"haha";"ok";"2024-11-29 13:01:36"
    "9";"Herr";"Robert";"Sanuel";"samuel@email";"HAGELBERGERSTR";"9";"bERLIN";"10000";"bERLIN";"haha";"ok";"2024-11-29 13:01:41"
    "10";"Herr";"Robert";"Sanuel";"samuel@email";"HAGELBERGERSTR";"9";"bERLIN";"10000";"bERLIN";"haha";"ok";"2024-11-29 13:01:54"
    "11";"Herr";"Robert";"Sanuel";"samuel@email";"HAGELBERGERSTR";"9";"bERLIN";"10000";"bERLIN";"haha";"ok";"2024-11-29 13:03:27"
  • ["id";"Anrede";"Vorname";"Nachname";"Email";"Strasse";"Nummer";"Ort";"PLZ";"Bundesland";"Kommentare";"Unterstuetzer";"reg_date"
    "1";"Herr";"Robert";"Sauel";"samuel@email";"HAGELBERGERSTR";"9";"bERLIN";"10000";"bERLIN";"haha";"ok";"2024-11-28 11:49:55"
    "2";"Herr";"Robert";"sauter";"samuel@email";"HAGELBERGERSTR";"9";"bERLIN";"10000";"bERLIN";"haha";"ok";"2024-11-28 12:02:11"
    "3";"Herr";"Robert";"richard";"samuel@email";"HAGELBERGERSTR";"9";"bERLIN";"10000";"bERLIN";"haha";"ok";"2024-11-28 12:03:32"
    "4";"Herr";"Robert";"Reinersl";"samuel@email";"HAGELBERGERSTR";"9";"bERLIN";"10000";"bERLIN";"haha";"ok";"2024-11-29 09:39:52"
    "5";"Herr";"Robert";"fenterl";"samuel@email";"HAGELBERGERSTR";"9";"bERLIN";"10000";"bERLIN";"haha";"ok";"2024-11-29 09:46:10"
    "6";"Herr";"Robert";"Swinkler";"samuel@email";"HAGELBERGERSTR";"9";"bERLIN";"10000";"bERLIN";"haha";"ok";"2024-11-29 10:35:22"
    "7";"Herr";"Robert";"Forkerl";"samuel@email";"HAGELBERGERSTR";"9";"bERLIN";"10000";"bERLIN";"haha";"ok";"2024-11-29 12:47:39"
    "8";"Herr";"Robert";"Svolkerl";"samuel@email";"HAGELBERGERSTR";"9";"bERLIN";"10000";"bERLIN";"haha";"ok";"2024-11-29 13:01:36"
    "9";"Herr";"Robert";"Sanuel";"samuel@email";"HAGELBERGERSTR";"9";"bERLIN";"10000";"bERLIN";"haha";"ok";"2024-11-29 13:01:41"
    "10";"Herr";"Robert";"Sanuel";"samuel@email";"HAGELBERGERSTR";"9";"bERLIN";"10000";"bERLIN";"haha";"ok";"2024-11-29 13:01:54"
    "11";"Herr";"Robert";"Sanuel";"samuel@email";"HAGELBERGERSTR";"9";"bERLIN";"10000";"bERLIN";"haha";"ok";"2024-11-29 13:03:27"

    /list]
    Bei meinen Proben habe ich festgestellt: Man muß für panda zwei csv dateien bilden die beide die selbe Struktur (mit Zeilenüberschrift )hat.
    Ich habe nun mit Hilfe von mehrmaligen Versuchenundmit Hilfe von Mikrosoft Copilot folgendes Listing mit Teilen daraus kombiniert bzw. verändert.

    Code: Alles auswählen

     import pandas as pd
    import numpy
    
    
    df = pd.read_csv("listeprobe1.csv")#importiere in Panda als df
    da = pd.read_csv("listeprobe2.csv")#importiere in Panda als da
    data = pd.concat([da,df]) #mach aus zwei eine datei data
    
    #dienächsten fünf zeilen stammen aus copilot
    #for data in df3:
    #data = {
    #"name": ["Sally", "Mary", "John", "Mary"],
    #"age": [50, 40, 30, 40],
    #"qualified": [True, False, False, False]
    #}
    data = pd.DataFrame(data)
    
    print("Original DataFrame:")
    print(data)
    
    # --- Remove duplicates ---
    # Keep the first occurrence (default)
    data_no_dupes = data.drop_duplicates()
    
    print("\nAfter drop_duplicates (keep='Vorname'):")
    print(data_no_dupes)
    
    # --- Remove duplicates based on specific columns ---
    data_no_dupes_name = data.drop_duplicates(subset=['Vorname'], keep='last')
    
    print("\nAfter drop_duplicates on 'Vorname' (keep='last'):")
    print(data_no_dupes_name)
    
    # --- Remove duplicates in-place ---
    data.drop_duplicates(inplace=True, ignore_index=True)
    
    print("\nIn-place removal with reindexing:")
    print(data)
     
    Irgendwie ist das Ergebnis komisch weil zuwenig Duplikate gelöscht werden. Bei Vorname müßten mehr verschwinden
Benutzeravatar
__blackjack__
User
Beiträge: 14189
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@oldboyJR: Warum denkst Du das? Welche sollten da gelöscht werden und warum?
“Every thinking person fears nuclear war and every technological nation plans for it. Everyone knows
it's madness, and every country has an excuse.” — Carl Sagan, Cosmos, Episode 13: Who Speaks for Earth?
oldboyJR
User
Beiträge: 81
Registriert: Donnerstag 28. März 2024, 16:19

Wenn ich das richtig verstanden habe wird die Spalte Vorname genommen um den unterschied festzustellen und dann alles gelöscht was nun doppelt ist. Bei mir bleiben zuviele Robert übrig
Benutzeravatar
__blackjack__
User
Beiträge: 14189
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@oldboyJR: Dann hast Du das nicht richtig verstanden. Wenn Du das auf die Spalte "Vorname" beziehen möchtest, dann musst Du das auch angeben. Der Rechner kann ja nicht raten welche Spalte Du meinst, Wenn Du keine Spalten angibst, bezieht sich das auf alle Spalten, und die Roberts unterscheiden sich halt mindestens in einer Spalte, also sind es auch keine Duplikate.
“Every thinking person fears nuclear war and every technological nation plans for it. Everyone knows
it's madness, and every country has an excuse.” — Carl Sagan, Cosmos, Episode 13: Who Speaks for Earth?
Antworten