Python Pandas Merge Tabellen mit Conditions

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
Je1ns
User
Beiträge: 5
Registriert: Montag 21. August 2023, 19:21

Hi zusammen, ich würde gerne mit Python Pandas zwei dataframes mergen. Der merge soll als inner join mit zwei Conditions realisiert werden:
Ich will aus dem zweiten Dataframe nur die Zeilen mergen, den "Purchase" als Value haben und bei denen die Zeile Date > als die Zeile Date im anderen Dataframe. Ich habe es so probiert:
merged_df = df1.merge(df2[(df2['Art'] == "Purchase") & (df2["Datum"] > df1["Datum"])], on='Name')
Die zweite Conditions mit dem Datumsvergleich funktioniert leider nicht- der merge läuft durch und liefert keine Ergebnisse...
Jemand eine Idee wie ich hier die Code-Zeile sinnvoll abändern kann?
Ganz lieben Dank und ein gutes WE, Jens
Benutzeravatar
__blackjack__
User
Beiträge: 13237
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Je1ns: Das vergleicht ja in der zweiten Teilbedingung die "Datum"-Spalten von zwei verschiedenen DataFrames und funktioniert auch nur wenn beide die gleiche Länge (und den gleichen Index) haben. Das passiert Zeilenweise, also ist überhaupt nicht garantiert, dass die beiden "Datum"-Werte zum gleichen "Name"-Wert gehören. Für diese Teilbedingung muss man erst mergen und dann kann man selektieren.

Edit: Oder man benutzt die "Name"-Spalte in beiden DataFrames als Index.
Please call it what it is: copyright infringement, not piracy. Piracy takes place in international waters, and involves one or more of theft, murder, rape and kidnapping. Making an unauthorized copy of a piece of software is not piracy, it is an infringement of a government-granted monopoly.
Antworten