2012-10-11 21 views
28

Ich verwende Python Pandas Datenrahmen, ich habe einen ursprünglichen Datenrahmen sagen D. I extrahieren zwei Datenrahmen aus es wie folgt aus:wie kombinieren zwei Datenrahmen in Python Pandas

A = D[D.label == k]

B = D[D.label != k]

dann ändere ich das Etikett in A und B:

A.label = 1 

B.label = -1

Ich möchte A und B kombinieren, damit ich sie als einen Datenrahmen so etwas wie Union haben kann. Die Reihenfolge der Daten nicht wichtig, aber wenn wir A und B aus D probieren sie behalten ihre Indizes von D.

Antwort

51

Ich glaube, Sie append Methode können

bigdata = data1.append(data2, ignore_index=True) 

ihren Indizes halten gerade nicht verwenden das ignore_index Stichwort ...

+1

Dies funktioniert. Es erstellt jedoch einen neuen Datenrahmen. Gibt es eine Möglichkeit, es inline zu machen? Das wäre schön, wenn ich riesige Datenmengen aus einer Datenbank in Stapeln lade, so dass ich den Datenrahmen iterativ aktualisieren könnte, ohne jedes Mal eine Kopie zu erstellen. – Andrew

+0

Ja, das ist möglich, siehe: https://stackoverflow.com/a/46661368/5717580 –

31

Sie auch pd.concat verwenden können, die hilfreich ist, vor allem, wenn Sie mehr als zwei Datenrahmen beitreten:

bigdata = pd.concat([data1, data2], ignore_index=True) 
9

Ich dachte, das hier hinzuzufügen, wenn jemand es nützlich findet. @ostrokach bereits erwähnt, wie Sie den Datenrahmen über die Reihen zusammenführen können, welche

sind
df_row_merged = pd.concat([df_a, df_b], ignore_index=True) 

über mehrere Spalten zu verschmelzen, können Sie die folgende Syntax verwenden:

df_col_merged =pd.concat([df_a, df_b], axis=1) 
1

Es gibt eine andere Lösung für den Fall, dass Sie Arbeiten mit Big Data und müssen mehrere Datensätze verketten. concat können leistungsintensive erhalten, wenn Sie also df jedes Mal eine neue nicht erstellen möchten, können Sie stattdessen verwenden, um eine Liste Verständnis:

frames = [ process_file(f) for f in dataset_files ] 
result = pd.append(frames) 

(als here in the docs am unteren Rand des Abschnitts wies darauf hin,):

Hinweis: Es ist jedoch bemerkenswert,, dass concat (und damit append) eine vollständige Kopie der Daten machen, und dass diese Funkt ständig wiederverwendet Ion kann einen signifikanten Leistungseinbruch erzeugen. Wenn Sie die Operation über mehrere Datensätze verwenden müssen, verwenden Sie ein Listenverständnis.

Verwandte Themen