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
Zwei CSV vergleichen
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.
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.
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.
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.
- __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?
it's madness, and every country has an excuse.” — Carl Sagan, Cosmos, Episode 13: Who Speaks for Earth?
- __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.
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?
it's madness, and every country has an excuse.” — Carl Sagan, Cosmos, Episode 13: Who Speaks for Earth?
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!
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
-
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
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
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.
Das (droppen)mit
funktioniert nur mit der Variable data obwohl df auch ein DataFrame ist!!
Die Verknüpfung z.B. zu einer DataFrame variable df3 stellt nicht die Funktion 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
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
Code: Alles auswählen
data_no_dupes_name = data.drop_duplicates(subset=['Vorname'], keep='last')
Die Verknüpfung z.B. zu einer DataFrame variable df3
Code: Alles auswählen
df3 = pd.concat([da,df]) #mach aus zwei eine datei dataCode: Alles auswählen
data.drop_duplicates(subset=['Vorname'], keep='last')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:
Der größte Unsinn ist das:
Code: Alles auswählen
data = pd.DataFrame(data)