Ich versuche, mehrere Dataframe
s zusammenführen/beitreten und bisher habe ich kein Glück. Ich habe merge
Methode gefunden, aber es funktioniert nur mit zwei Dataframes. Ich fand auch die SO answer was darauf hindeutet, so etwas zu tun:Mehrere Datenrahmen in Spalte
df1.merge(df2,on='name').merge(df3,on='name')
Unfortunatelly wird es nicht in meinem Fall arbeiten, weil ich 20+ Anzahl von Datenrahmen.
Meine nächste Idee war es, join
zu verwenden. Gemäß der Referenz, wenn ich mehrere Datenrahmen zusammenfüge, muss ich eine Liste verwenden und nur ich kann mich einer Indexspalte anschließen. Also änderte ich Indizes für alle Spalten (ok, kann es grammatisch leicht getan werden) und am Ende mit etwas wie folgt aus:
df.join([df1,df2,df3])
Leider auch dieser Ansatz gescheitert, weil andere Spaltennamen sind dieselbe in allen Datenrahmen. Ich habe mich entschieden, das letzte zu tun, nämlich alle Spalten umzubenennen. Aber als ich schließlich alles beigetreten: df = pd.Dataframe() df.join ([DF1, DF2, DF3])
Ich habe leeren Datenrahmen empfangen. Ich habe keine Idee mehr, wie ich mich ihnen anschließen kann. Kann jemand etwas mehr vorschlagen?
EDIT1:
Probeneingang:
import pandas as pd
df1 = pd.DataFrame(np.array([
['a', 5, 19],
['b', 14, 16],
['c', 4, 9]]),
columns=['name', 'attr1', 'attr2'])
df2 = pd.DataFrame(np.array([
['a', 15, 49],
['b', 4, 36],
['c', 14, 9]]),
columns=['name', 'attr1', 'attr2'])
df1
name attr1 attr2
0 a 5 19
1 b 14 16
2 c 4 9
df2
name attr1 attr2
0 a 15 49
1 b 4 36
2 c 14 9
Erwartete Ausgabe:
df
name attr1_1 attr2_1 attr1_2 attr2_2
0 a 5 19 15 49
1 b 14 16 4 36
2 c 4 9 14 9
Indizes könnte zwischen Datenrahmen ungeordnete, aber es ist garantiert, dass sie existiert.
Wenn die Spaltennamen sind die gleichen in allen Datenrahmen, dann was wollen Sie die Ausgabe tatsächlich aussehen wie? – chrisaycock
@chrisaycock Ich habe Beispieleingabe und erwartete Ausgabe hinzugefügt. Ich habe es auf "merge" basiert, wo Pandas automatisch Suffixe zu Namen anderer Spalten hinzufügt – sebap123