Jetzt muss ich zwei Datenrahmen mit der Bedingung größer als (> =) zusammenführen. Aber nur Unterstützung gleich zusammenführen. Gibt es eine Möglichkeit, damit umzugehen? Vielen Dank!Funktioniert Pandas Dataframe Merge mit mehr oder weniger?
Antwort
Ich weiß nicht, wie die folgend mit ähnlicher Zusammenführung zu erreichen und Join-Syntax in Pandas,
SELECT *
FROM a
INNER JOIN b
ON a.column1 >= b.column1 AND a.column1 <= b.column2
Aber die obigen Abfrage kann auch implizit geschrieben werden;
SELECT *
FROM a, b
WHERE a.column1 >= b.column1 AND a.column1 <= b.column2
Das ist im Grunde die alte Syntax und sollte genau dasselbe (Leistung) tun. Es nimmt das kartesische Produkt von 2 Tabellen (oder Cross-Join) und wählen Sie dann aus dem Verwenden der WHERE-Bedingung, die leicht in Pandas implementiert werden könnte. Dies könnte ein wenig schwer in Erinnerung sein, sollte aber schnell sein.
Zuerst die FROM a, b
Klausel (wir ordnen vorübergehend eine Spalte mit denselben Werten in allen Reihen zu, also können wir uns über ihn verbinden);
df = pd.merge(a.assign(key=0), b.assign(key=0), on='key').drop('key', axis=1)
und verwenden dann boolean Indexierungs (unser WHERE
Satz) um den Rahmen zu schneiden;
df[(df["column1_x"] >= df["column1_y"]) & (df["column1_x"] <= df["column2_y"])]
Wenn Sie nicht das kartesische Produkt und wollen nur die Zeilen auf denselben Index der beiden Tabellen vergleichen, können Sie auf den Index wie folgt zusammenführen können;
df = a.merge(b, left_index = True, right_index = True)
oder concat auf die Achse 1, wenn sie dieselbe Länge;
df = pd.concat([a, b], axis=1)
Und verwenden Sie boolesche Indizierung erneut, um Ergebnisse zu beseitigen;
df[(df["column1_x"] >= df["column1_y"]) & (df["column1_x"] <= df["column2_y"])]
Vielen Dank! Diese Arbeit für mich. Sehr zu schätzen wissen! –
- 1. Pandas DataFrame Merge setzt Index
- 2. Pandas DataFrame Objektvererbung oder Objektverwendung?
- 3. Wie funktioniert das Binning mit Pandas DataFrame?
- 4. Merge calc() mit weniger CSS
- 5. Pandas Merge Bins
- 6. Merge DataFrames in Pandas mit dem Mittelwert
- 7. Pandas DataFrame Spaltenverkettung
- 8. Schreiben oder Protokolldruckausgabe von Pandas Dataframe
- 9. Ändern der Werte in Pandas Dataframe funktioniert
- 10. Pandas: Merge oder Rückkehr Join falsche Datenrahmen
- 11. Kumulative Summe Pandas DataFrame mit Indikator DataFrame
- 12. Pandas: Probleme zu verstehen, wie Merge funktioniert
- 13. Pandas DataFrame Replace() mit Regex
- 14. Python Pandas Dataframe-Filter funktioniert nicht
- 15. Merge von mehr als 2 Python pandas Datenrahmen
- 16. Dataframe PANDAS
- 17. Count oder Summe mit Pandas Dataframe mit Anzahl der Spalten
- 18. seaborn heatmap mit pandas dataframe
- 19. Pandas DataFrame Leistung
- 20. Pandas Dataframe ersetzen
- 21. Pandas (Dataframe) Daten auswählen
- 22. Erneutes Signieren von .ipa mit weniger oder mehr Geräten
- 23. initialisiere Pandas Dataframe mit None
- 24. pandas DataFrame mit Format zuweisen
- 25. Pandas Dataframe Rollfenster mit groupby
- 26. Summe Subset mit Pandas Dataframe
- 27. Pandas Dataframe Speicher Probleme
- 28. Pandas DataFrame Apply Effizienz
- 29. Pandas Dataframe Spaltenauswahl
- 30. Pandas Dataframe unter Bedingung geteilt
Ich glaube nicht, dass das stimmt, können Sie Datenrahmen indizieren und in Scheiben schneiden, die jede gewünschte Bedingung verwenden. Kannst du deine Frage erklären? Wie sehen Ihre Rahmen aus, wie möchten Sie, dass sie usw. aussehen? – umutto
Vielen Dank für Ihre Antwort. Zum Beispiel habe ich Datenrahmen A und B, ich muss sie innerlich mit der Bedingung zusammenführen, dass A.Column1> = B.Column1 und A.Column1 <= B.Column2. In SQL ist dies sehr einfach: Wählen Sie * aus A inner Join B auf A.Column1> = B.Column1 und A.Column1 <= B.Column2, aber in Pandas kann ich keine Möglichkeit finden, damit umzugehen :( –