Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Pandas column bind (cbind) two data frames

I've got a dataframe df_a with id information:

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

and another dataframe df_b, with the same number of rows that I know correspond to the rows in df_a:

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

What I want to do is simply cbind the two and get:

    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   

What I have tried:

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

which gives me an outer join.

    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 

The problem is that the indices for the two dataframes do not match. I read the documentation for pandas.concat, and saw that there is an option ignore_index. But that only applies to the concatenation axis, in my case the columns and it certainly is not the right choice for me. So my question is: is there a simple way to achieve this?

like image 839
breezymri Avatar asked Oct 12 '15 18:10

breezymri


People also ask

How do you Cbind two DataFrames in Python?

Column bind or concatenate columns of two dataframes in python pandas: Now lets concatenate or column bind two dataframes df1 and df2. The concatenation of two dataframes are performed with concat() function by takes two dataframes as argument, axis=1 performs the column wise operation.

How do you bind two data frames?

To join two data frames (datasets) vertically, use the rbind function. The two data frames must have the same variables, but they do not have to be in the same order. If data frameA has variables that data frameB does not, then either: Delete the extra variables in data frameA or.

Can you combine two DataFrames in pandas?

Pandas' merge and concat can be used to combine subsets of a DataFrame, or even data from different files. join function combines DataFrames based on index or column. Joining two DataFrames can be done in multiple ways (left, right, and inner) depending on what data must be in the final DataFrame.


1 Answers

If you're sure the index row values are the same then to avoid the index alignment order then just call reset_index(), this will reset your index values back to start from 0:

df_c = pd.concat([df_a.reset_index(drop=True), df_b], axis=1) 
like image 171
EdChum Avatar answered Oct 03 '22 11:10

EdChum