Ich möchte einen Datenrahmen erstellen, der die Zeilen von zwei Eingabedatenrahmen auf ähnliche Weise wie ein Textvergleichs -Tool beim Vergleich von zwei Dateien ausrichtet. Beide haben Triple Index Jahr , pos und Score . In diesem Fall gibt es einen Schnittpunkt zwischen den beiden Indizes, aber das ist nicht unbedingt der Fall. DF_A und DF_B geben die angezeigte Ausgabe an. Die leeren Zellen können Nan enthalten oder leer sein. Beachten Sie, dass dies nicht ganz das gleiche ist wie das Ergebnis, das durch eine der Standard -Pandas -Verschmelzungs-, Join-, Concat- oder Align -Methoden erzeugt wird (soweit ich das beurteilen kann.)
Zum Beispiel Join (siehe Bild unten) gibt nicht die richtigen Nan/leeren Werte für pos -Werte 1 und 8. (Beachten Sie, dass ich verstehe, was join tut und warum es es tut - es ist einfach nicht das, was ich hier tun muss.)
import pandas as pd
data_A = {"year":[2023]*7,"pos":[1,2,4,4,4,8,8],"score":[15,20,30,30,30,60,60],"value":["a","b","c","c","c","d","d"]}
df_A = pd.DataFrame(data_A)
df_A = df_A.set_index(["year","pos","score"])
data_B = {"year":[2023]*9,"pos":[1,1,1,3,3,4,4,8,10],"score":[15,15,15,25,25,30,30,60,80],"value":["v","v","v","w","w","x","x","y","z"]}
df_B = pd.DataFrame(data_B)
df_B = df_B.set_index(["year","pos","score"])
df = pd.merge(df_A,df_B,on=["year","pos","score"],how="outer")
print(df)
df = df_A.join(df_B,how="outer",lsuffix='_left', rsuffix='_right')
print(df)
llll, rrrr = df_A.align(df_B)
print(llll)
print(rrrr)
Pandas DataFrame Align/Merge/Jucken Sie sich in ähnlicher Weise wie textbasierten Dateivergleich aus ⇐ Python
-
- Similar Topics
- Replies
- Views
- Last post