Pandas, Vergleich von zwei DataFrames
Verfasst: Montag 22. Juni 2020, 08:27
Hallo Zusammen,
ich erhalte von einer Website in regelmäßigen Abständen Daten, welche ich in einem DataFrame speichere. Diese möchte ich in einer CSV-Datei speichern und zu einem späteren Zeitpunkt auswerten.
Jetzt habe ich nur das Problem, das ich die Website auslese und bereits in der CSV-Datei vorhandene Einträge nicht wieder mit abspeichern möchte. Also war mein Gedanke, die CSV-Datei zu öffnen und in einen DataFrame zu laden.
Somit haben die neuen Daten (df_neu) sowie die vorhandenen Daten (df_alt) die gleiche Struktur. Diese würde ich nun gerne vergleichen und die neuen Einträge in einem weiteren DataFrame abspeichern. Diesen kann ich dann an df_alt mit den vorhandenen Daten anhängen und wieder in der CSV-Datei speichern.
Als Lösungsansatz hatte ich bisher die merge-Funktion. Bin da aber noch nicht so durchgestiegen und mir fehlt gerade die Inspiration bzw. der Lösungsansatz
Jedoch glaube ich, das es hierfür eine deutlich elegantere Variante gibt. Denn ich vermute, das die Performance in ein paar Monaten ziemlich leidet, da die Datenmenge in der CSV-Datei recht groß ist.
Vielen Dank für die Unterstützung!
Ist nicht sehr Aussagefähig aber dennoch mein bisheriger Versuch: (ist nur die Teillösung zum Vergleich, die Funktionen zum laden der Inhalte funktionieren bereits
)
ich erhalte von einer Website in regelmäßigen Abständen Daten, welche ich in einem DataFrame speichere. Diese möchte ich in einer CSV-Datei speichern und zu einem späteren Zeitpunkt auswerten.
Jetzt habe ich nur das Problem, das ich die Website auslese und bereits in der CSV-Datei vorhandene Einträge nicht wieder mit abspeichern möchte. Also war mein Gedanke, die CSV-Datei zu öffnen und in einen DataFrame zu laden.
Somit haben die neuen Daten (df_neu) sowie die vorhandenen Daten (df_alt) die gleiche Struktur. Diese würde ich nun gerne vergleichen und die neuen Einträge in einem weiteren DataFrame abspeichern. Diesen kann ich dann an df_alt mit den vorhandenen Daten anhängen und wieder in der CSV-Datei speichern.
Als Lösungsansatz hatte ich bisher die merge-Funktion. Bin da aber noch nicht so durchgestiegen und mir fehlt gerade die Inspiration bzw. der Lösungsansatz

Jedoch glaube ich, das es hierfür eine deutlich elegantere Variante gibt. Denn ich vermute, das die Performance in ein paar Monaten ziemlich leidet, da die Datenmenge in der CSV-Datei recht groß ist.
Vielen Dank für die Unterstützung!
Ist nicht sehr Aussagefähig aber dennoch mein bisheriger Versuch: (ist nur die Teillösung zum Vergleich, die Funktionen zum laden der Inhalte funktionieren bereits

Code: Alles auswählen
import pandas as pd
df_alt = pd.DataFrame()
df_neu = pd.DataFrame()
df_diff = pd.DataFrame()
df_alt = pd.read_csv("datei_alt.csv",
sep=";",
encoding="iso-8859-15",
header=1,
names=["Index", "Datum", "Zeit", "Titel", "Artikel", "URL"])
df_neu = pd.read_csv("datei_neu.csv",
sep=";",
encoding="iso-8859-15",
header=1,
names=["Index", "Datum", "Zeit", "Titel", "Artikel", "URL"])
print(df_alt)
print("****")
print(df_neu)
print("*****")
df_diff = pd.merge(df_neu, df_alt, how="inner", copy=False)
df_diff.set_index("Index")
print(df_diff)
df_diff.to_csv("diff.csv", sep=";", encoding="iso-8859-15")