[FIXED] Fügen Sie in Python einen Datenrahmen in einen anderen ein

Ausgabe

Hi ich habe folgende zwei DataFrame‘s (index level == 2):

df1 = pd.DataFrame()
df1["Index1"] = ["A", "AA"]
df1["Index2"] = ["B", "BB"]
df1 = df1.set_index(["Index1", "Index2"])
df1["Value1"] = 1
df1["Value2"] = 2
df1

df2 = pd.DataFrame()
df2["Index1"] = ["X", "XX"]
df2["Index2"] = ["Y", "YY"]

df2["Value1"] = 3
df2["Value2"] = 4
df2 = df2.set_index(["Index1", "Index2"])
df2

Ich möchte folgendes DataFramemit einem 3-Level-Index erstellen, wobei die erste Ebene angibt, aus welcher DataFramedie Werte entnommen werden. Beachten Sie, dass alle DataFramesgenau die gleichen Spalten haben:

Geben Sie hier die Bildbeschreibung ein

Wie kann ich das am automatisiertesten machen? Idealerweise hätte ich folgende Lösung:

# start with empty dataframe
res = pd.DataFrame(index = pd.MultiIndex(levels = [[], [], []],
                                        codes = [[],[],[]],
                                        names = ["Df number", "Index1", "Index2"]),
                  columns = ["Value1", "Value2"])

res = AddDataFrameAtIndex(index = "DF1", level = 0, dfToInsert = df1)
res = AddDataFrameAtIndex(index = "DF2", level = 0, dfToInsert = df2)

Lösung

Eine mögliche Lösung, basierend auf pandas.concat:

pd.concat([df1, df2], keys=['DF1', 'DF2'], names=['DF number']) 

Ausgabe:

                         Value1  Value2
DF number Index1 Index2                
DF1       A      B            1       2
          AA     BB           1       2
DF2       X      Y            3       4
          XX     YY           3       4


Beantwortet von –
PaulS


Antwort geprüft von –
Terry (FixError Volunteer)

0 Shares:
Leave a Reply

Your email address will not be published. Required fields are marked *

You May Also Like