1

I have the following 2 simple dataframes.

df1:

df1

df2:

df2

I want to add df2 to df1 by using something like:

df1["CF 0.3"]=df2

However, this only adds values where indexes in df1 and df2 are the same. I would like a way I can add a column so that missing indexes are automatically added and if there is not associated value of that index, it is filled with NaN. Something like this:

enter image description here

The way I did this is by writing df1=df1.add(df2)

This adds automatically missing indexes but all values are NaN. Then I manually populated values by writing:

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

Is there an easier way to do this? I have a feeling I am missing something.

I hope you understand my question :)

1
  • Thank you for your answers. Based on the suggestions I found this is exactly what I needed: result = pd.concat([df1, df2], axis=1) Commented Apr 19, 2016 at 14:54

3 Answers 3

1

Use concat refer to this documentation for detailed help.

And here is an example based on the documentation:

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
Sign up to request clarification or add additional context in comments.

Comments

0

please read the docs use concat or merge or join

http://pandas.pydata.org/pandas-docs/stable/merging.html#brief-primer-on-merge-methods-relational-algebra

Comments

0

Have a look at the concat function which does what you looking for here.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.