Zwei CSV vergleichen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
DominikD50
User
Beiträge: 1
Registriert: Samstag 27. September 2025, 23:05

Hallo

würde gerne 2 csv auf Änderungen vergleichen.
Es könnne Zeilen dazu kommen wegfallen oder anders sortiert sein
Die Datei hat keine Überschrift.
Spalte C soll die gemeinsame sein und dann D und E auf unterschiede verglichen werden und dann in csv ausgegeben werden
Ist in der alten eine Zeile da und in der neuen nicht egal
Ist in der neuen eine da dann Ausgabe in Datei
Kann mir hier jemand helfen?
Danke
imonbln
User
Beiträge: 194
Registriert: Freitag 3. Dezember 2021, 17:07

Mir ist nicht ganz klar, wie die Datei am Ende aussehen soll, aber das macht, denke ich nichts. Denn das Forum ist ja Hilfe zu selbst Hilfe. 

Deine Schritte sollten also ganz grob sein, beide CSV Dateien einlesen, beide nach Spalte C Sortieren,
dann durch die neue Tabelle durch Iterieren, jeweils Prüfen, ob der Wert von Spalte C auch in der alten vorhanden ist. Wenn ja, dann vergleich von D und E machen, das Ergebnis Speichern, wenn nicht, ist es ein neuer Eintrag.

Happy Coding und wenn Du konkrete Probleme hast und etwas Code zeigst (Codetags nicht vergessen), können wir, Dir sicher weiter helfen.
Pedroski55
User
Beiträge: 24
Registriert: Freitag 25. Juli 2025, 00:20

Was steht in Spalte C? Eine Zahl? Schriftliches? Wenn Zahl, dann sollte man immer jeweils in csv1 und csv2 die gleichen Zahlen finden, danach Spalten D und E vergleichen, falls unterschiedlich, die Zeilen exportieren.

Wie lange sind die csvs? Millionen von Einträgen? Schon wieder ein Börsenguru?

Besser wenn du von jeder CSVdatei ein kleines Beispiel hier hinterlegst, dann hätte man erst einen Überblick.
mechanicalStore
User
Beiträge: 187
Registriert: Dienstag 29. Dezember 2009, 00:09

Guck dir das Pandas Modul an. Deine Aufgabe kriegst du mit ein paar Zeilen Code hin.
oldboyJR
User
Beiträge: 85
Registriert: Donnerstag 28. März 2024, 16:19

Es gibt ein csv Modul ggf nachladen (adminrechte nötig).Immer die passenden syntax der version beachten. paralel beide öffnen vergleichen
Zuletzt geändert von oldboyJR am Mittwoch 8. Oktober 2025, 11:16, insgesamt 1-mal geändert.
Benutzeravatar
__blackjack__
User
Beiträge: 14192
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@oldboyJR: Das `csv`-Modul ist in der Standardbibliothek, da muss man nichts ”nachladen” und es sind keine Adminrechte nötig.
“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: 85
Registriert: Donnerstag 28. März 2024, 16:19

Adminrechte sind nur notwendig wenn man Module die nicht vorhanden sind laden möchte oder wenn es durch anderes freigeschaltet ist.
Benutzeravatar
sparrow
User
Beiträge: 4577
Registriert: Freitag 17. April 2009, 10:28

@oldboyJR: Das ist so nicht richtig.
Benutzeravatar
__blackjack__
User
Beiträge: 14192
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@oldboyJR: Module entstehen nicht auf magische Weise wenn man Adminrechte hat. Nicht vorhandene Module müsste man installieren. Dazu braucht man aber nicht zwangsläufig Adminrechte. Man kann Module auch für den aktuellen Benutzer installieren, oder in ein venv.

Umgekehrt kann es auch bei einem Programm für das alle Module vorhanden sind, für das Ausführen des Programms Adminrechte braucht, wenn das Programm selber irgendetwas macht, das diese Rechte benötigt.
“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?
avivadee
User
Beiträge: 6
Registriert: Donnerstag 3. Juli 2025, 06:51

Hallo! Auch wenn der Beitrag schon älter ist: Für so einen Vergleich kannst du Python und das Modul pandas verwenden. Du liest beide CSV-Dateien ein, nutzt Spalte C als Schlüssel und vergleichst D und E. Unterschiede kannst du dann herausfiltern und wieder in ein neues CSV schreiben. Wenn du magst, kann ich dir gern ein passendes Skriptbeispiel geben!
oldboyJR
User
Beiträge: 85
Registriert: Donnerstag 28. März 2024, 16:19

Im Grunde ist es wie in allen Datenbanken so auch in Panda. Grundvoraussetzung zwei CSV mit selben Überschriften. In Panda die beiden Daten laden dann zu einer verknüpfen sortieren nach spalten und dann alles bereinigen. https://www.datacamp.com/de/tutorial/pandas. Man kann das auch gut mit Mysql in Xampp erledigen denn die interne Server Variante beherscht den CSV import wie auch den export Einfach alles in eine Tabelle importieren ,sortieren, noch eine spalte hinzufügen die Boolwerte generiert, und diesen Sortieren, um den festgestelten doppeleintrag löschen
oldboyJR
User
Beiträge: 85
Registriert: Donnerstag 28. März 2024, 16:19

Das bereinigen mit dem Befehl ist mir noch nicht ganz klar. Ich probiere noch
mechanicalStore
User
Beiträge: 187
Registriert: Dienstag 29. Dezember 2009, 00:09

@oldboyJR:
Ein Panda ist ein niedliches Tierchen aus China. Pandas ist eine Python Bibliothek und keine Datenbank. Der TE schreibt, dass die csv keine Überschriften haben. Für diese Aufgabe ist eine Xampp Installation ein exorbitaler, absolut unnötiger Aufwand. Das „bereinigen“ ist unnötig, das kann man alles in einem Befehl erledigen.
Das von dir verlinkte Tutorial ist sehr schwammig, erklärt nicht das wesentliche, und hat teilweise Fehlinformationen. Hier sei dringend auf die original Doku verwiesen. Da gibt es auch Tutorials, Z.b.:

https://pandas.pydata.org/docs/getting_ ... index.html
oldboyJR
User
Beiträge: 85
Registriert: Donnerstag 28. März 2024, 16:19

Ok man kann beides in Pandas (panda haha) laden und verbinden wenn die Überschriften gleich sind. Pandas braucht die Überschriften sonst funktioniert nicht das verknüpfen.

Code: Alles auswählen

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
Das (droppen)mit

Code: Alles auswählen

data_no_dupes_name = data.drop_duplicates(subset=['Vorname'], keep='last')
funktioniert nur mit der Variable data obwohl df auch ein DataFrame ist!!
Die Verknüpfung z.B. zu einer DataFrame variable df3

Code: Alles auswählen

df3 = pd.concat([da,df]) #mach aus zwei eine datei data
stellt nicht die Funktion

Code: Alles auswählen

data.drop_duplicates(subset=['Vorname'], keep='last')
zur verfügung. Auf jeden Fall nicht in meiner Conda spider version . Mein endgültiges Programm stellt explizit also die variable "data" her. sieht deshalb so so aus

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)
mechanicalStore
User
Beiträge: 187
Registriert: Dienstag 29. Dezember 2009, 00:09

Das alles zu kommentieren wäre sinnlos...

Der größte Unsinn ist das:

Code: Alles auswählen

data = pd.DataFrame(data)
Antworten