import pandas as pd
df1 = pd.DataFrame()
df1["key"] = ["a", "b", "c"]
df1["low"] = [0, 1, 2]
df1["high"] = [2, 4, 6]
df2 = pd.DataFrame()
df2["key"] = ["a", "a", "b", "b", "c"]
df2["value"] = [1, 3, 2, 5, 0]
print(f"df1:\n{df1}")
print(f"df2:\n{df2}")
< /code>
Ausgabe: < /p>
df1:
key low high
0 a 0 2
1 b 1 4
2 c 2 6
df2:
key value
0 a 1
1 a 3
2 b 2
3 b 5
4 c 0
< /code>
Wenn ich diese Datenrahmen zusammenführen möchte, so dass ich nur die Zeilen halte, wo "Schlüssel" übereinstimmt und "Wert" zwischen "niedrig" und "hoch" ist, weiß ich, wie das geht In zwei Schritten: < /p>
df = df1.merge(df2, how="inner", on="key")
df = df.loc[(df["value"] >= df["low"]) & (df["value"]
Ausgabe: < /p>
df:
key low high value
0 a 0 2 1
2 b 1 4 2
< /code>
Aber dieser Ansatz ist möglicherweise nicht praktikabel, wenn die Datenrahmen groß sind, da das Zusammenführen der Datenframes im ersten Schritt eine lange Zeit dauern kann. < /p>
in SQL können wir den Verbindung mit einer solchen Abfrage problemlos durchführen: < /p>
SELECT
df1.key,
df1.low,
df1.high,
df2.value
FROM df1
INNER JOIN df2
ON
df1.key = df2.key AND
df2.value BETWEEN df1.low AND df1.high
Gibt es eine Möglichkeit, diese Zusammenführung in Python in einem Schritt auszuführen? Für eine Lösung ohne zusätzliche Abhängigkeiten wie Pyjanitor oder andere Module neben Pandas. Betrieb, nicht zwei Operationen (wie .Merge und .loc) kombiniert auf einer einzelnen Linie.
print(f"df1:\n{df1}") print(f"df2:\n{df2}") < /code> Ausgabe: < /p> df1: key low high 0 a 0 2 1 b 1 4 2 c 2 6 df2: key value 0 a 1 1 a 3 2 b 2 3 b 5 4 c 0 < /code> Wenn ich diese Datenrahmen zusammenführen möchte, so dass ich nur die Zeilen halte, wo "Schlüssel" übereinstimmt und "Wert" zwischen "niedrig" und "hoch" ist, weiß ich, wie das geht In zwei Schritten: < /p> df = df1.merge(df2, how="inner", on="key") df = df.loc[(df["value"] >= df["low"]) & (df["value"] Ausgabe: < /p> df: key low high value 0 a 0 2 1 2 b 1 4 2 < /code> Aber dieser Ansatz ist möglicherweise nicht praktikabel, wenn die Datenrahmen groß sind, da das Zusammenführen der Datenframes im ersten Schritt eine lange Zeit dauern kann. < /p> in SQL können wir den Verbindung mit einer solchen Abfrage problemlos durchführen: < /p> SELECT df1.key, df1.low, df1.high, df2.value FROM df1 INNER JOIN df2 ON df1.key = df2.key AND df2.value BETWEEN df1.low AND df1.high [/code] Gibt es eine Möglichkeit, diese Zusammenführung in Python in einem Schritt auszuführen? Für eine Lösung ohne zusätzliche Abhängigkeiten wie Pyjanitor oder andere Module neben Pandas. Betrieb, nicht zwei Operationen (wie .Merge und .loc) kombiniert auf einer einzelnen Linie.
Ich habe eine Lösung aus meinem Problem gefunden, aber es ist eindeutig die dumm und ineffizienteste. Ich hatte gehofft, dass mir jemand bei einer richtigen Lösung helfen könnte.
Ich habe zwei...
Ich habe einen Datenrahmen aus einer CSV-Datei erstellt und versuche jetzt, ein Kreuz-TAB von zwei Spalten ( Personal_status und Geschlecht ) zu erstellen. Die Ausgabe sollte so aussehen,...
Ich habe einen Datenrahmen mit 6 Spalten: 'Name', 'A', 'B', 'C', 'Val', 'Kategorie'
Es sieht so aus:
Name A B C Val Category
x 1.1 0 0.2 NA NA
y 0 0.1 0 NA NA
z 0.5 0.1 0.3 NA NA