2016-04-19 11 views
-1

Ich habe die folgenden 2 einfachen Datenrahmen.Pandas Datenrahmen Spalten mit automatischem Hinzufügen hinzufügen fehlende Indizes

df1:

df1

df2:

df2

ich mit so etwas wie df2 df1 hinzufügen möchten:

df1["CF 0.3"]=df2 

Dies erhöht jedoch nur Werte, bei denen Indizes in df1 und df2 sind das Gleiche. Ich möchte eine Art, wie ich eine Spalte hinzufügen kann, so dass fehlende Indizes automatisch hinzugefügt werden und wenn kein Wert dieses Index zugeordnet ist, wird es mit NaN gefüllt. Etwas wie folgt aus:

enter image description here

So wie ich dies tat, ist durch df1 = df1.add Schreiben (DF2)

Dies fügt automatisch fehlende Indizes aber alle Werte sind NaN. I-Werte manuell durch Schreiben dann bevölkert:

df1["CF 0.1"]=dummyDF1 
df1["CF 0.3"]=dummyDF2 

Gibt es einen einfacheren Weg, dies zu tun? Ich habe das Gefühl, dass mir etwas fehlt.

Ich hoffe, dass Sie meine Frage verstehen :)

+0

Vielen Dank für Ihre Antworten. Basierend auf den Vorschlägen, die ich gefunden habe, ist dies genau das, was ich brauchte: result = pd.concat ([df1, df2], axis = 1) – bmorvaj

Antwort

0

Verwenden concat diese documentation für ausführliche Hilfe.

Und hier ist ein Beispiel für die Dokumentation basiert:

import pandas as pd 
df1 = pd.DataFrame({'A': ['A0', 'A1', 'A2', 'A3'], 
        'B': ['B0', 'B1', 'B2', 'B3'], 
        'C': ['C0', 'C1', 'C2', 'C3'], 
        'D': ['D0', 'D1', 'D2', 'D3']}, 
        index=[0, 1, 2, 3]) 


df2 = pd.DataFrame({'X': ['A4', 'A5', 'A6', 'A7'], 
        'XB': ['B4', 'B5', 'B6', 'B7'], 
        'XC': ['C4', 'C5', 'C6', 'C7'], 
        'XD': ['D4', 'D5', 'D6', 'D7']}, 
        index=[4, 5, 6, 7]) 


df3 = pd.DataFrame({'YA': ['A8', 'A9', 'A10', 'A11'], 
        'YB': ['B8', 'B9', 'B10', 'B11'], 
        'YC': ['C8', 'C9', 'C10', 'C11'], 
        'YD': ['D8', 'D9', 'D10', 'D11']}, 
        index=[8, 9, 10, 11]) 

#To get the desired result you are looking for you need to reset the index. 
#With the dataframes you have you may not be able to merge as well 
#Since merge would need a common index or column 
frames = [df1.reset_index(drop=True), df2.reset_index(drop=True), df3.reset_index(drop=True)] 

df4 = pd.concat(frames, axis=1) 

print df4 
0

Werfen Sie einen Blick auf die concat-Funktion verbinden, die tut was Sie suchen here.

Verwandte Themen