2015-10-12 15 views
15

ich einen Datenrahmen df_a mit ID-Informationen haben:Pandas Spalte bind (cbind) zwei Datenrahmen

unique_id lacet_number 
15 5570613 TLA-0138365 
24 5025490 EMP-0138757 
36 4354431 DXN-0025343 

und eine andere Datenrahmen df_b, mit der gleichen Anzahl von Zeilen, die ich zu den Zeilen in df_a entsprechen kennen :

 latitude longitude 
0 -93.193560 31.217029 
1 -93.948082 35.360874 
2 -103.131508 37.787609 

Was ich tun möchte, ist einfach die zwei cbind und erhalten:

unique_id lacet_number  latitude longitude 
0  5570613 TLA-0138365 -93.193560 31.217029 
1  5025490 EMP-0138757 -93.948082 35.360874 
2  4354431 DXN-0025343 -103.131508 37.787609 

Was ich versucht habe:

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

, die mir eine äußere gibt beizutreten.

unique_id lacet_number latitude longitude 
0   NaN   NaN -93.193560 31.217029 
1   NaN   NaN -93.948082 35.360874 
2   NaN   NaN -103.131508 37.787609 
15 5570613 TLA-0138365   NaN  NaN 
24 5025490 EMP-0138757   NaN  NaN 
36 4354431 DXN-0025343   NaN  NaN 

Das Problem ist, dass die Indizes für die beiden Datenrahmen nicht übereinstimmen. Ich habe die Dokumentation zu pandas.concat gelesen und festgestellt, dass es eine Option "ignore_index" gibt. Aber das gilt nur für die Verkettungsachse, in meinem Fall für die Spalten und es ist sicherlich nicht die richtige Wahl für mich. Meine Frage ist also: Gibt es einen einfachen Weg, dies zu erreichen?

+2

Leider warum kann‘ t tust du einfach 'df_c = pd.concat ([df_a.reset_index(), df_b], axis = 1)'? – EdChum

+0

@EdChum, Danke für den Tipp. Es hat das Problem gelöst. Die Antwort auf Ihre Frage ist, dass ich über diese Funktion nicht wusste. Ich habe versucht, Reindex, das war offensichtlich nicht für diesen Zweck. Würde es Ihnen etwas ausmachen, Ihren Kommentar zu einer Antwort zu ändern? Ich werde es akzeptieren. – breezymri

Antwort

28

Wenn Sie sicher sind, dass die Indexzeilenwerte gleich sind dann die Index Ausrichtung zu vermeiden, um dann nur reset_index() nennen, dies wird Ihre Indexwerte zurück zum Start von 0 zurück:

df_c = pd.concat([df_a.reset_index(drop=True), df_b], axis=1) 
Verwandte Themen