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?
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.
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.
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.
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)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With