7

I have two pandas dataframes, say df1 and df2, of some size each but with different indexes and I would like to sum up the two dataframes element by element. I provide you an easy example to better understand the problem:

dic1 = {'a': [3, 1, 5, 2], 'b': [3, 1, 6, 3], 'c': [6, 7, 3, 0]}
dic2 = {'c': [7, 3, 5, 9], 'd': [9, 0, 2, 5], 'e': [4, 8, 3, 7]}
df1 = pd.DataFrame(dic1)
df2 = pd.DataFrame(dic2, index = [4, 5, 6, 7])

so df1 will be

   a  b  c
0  3  3  6
1  1  1  7
2  5  6  3
3  2  3  0

and df2 will be

   c  d  e
4  7  9  4
5  3  0  8
6  5  2  3
7  9  5  7

now if type

df1 + df2

what I get is

    a   b   c   d   e
 0 NaN NaN NaN NaN NaN
 1 NaN NaN NaN NaN NaN
 2 NaN NaN NaN NaN NaN
 3 NaN NaN NaN NaN NaN
 4 NaN NaN NaN NaN NaN
 5 NaN NaN NaN NaN NaN
 6 NaN NaN NaN NaN NaN
 7 NaN NaN NaN NaN NaN

How can I make pandas understand that I want to sum up the two dataframe just element by element?

1
  • 1
    If you don't care about the indexes, df1.values + df2.values Commented Jul 27, 2016 at 16:50

1 Answer 1

11

UPDATE: much better solution from piRSquared:

In [39]: df1 + df2.values
Out[39]:
    a   b   c
0  10  12  10
1   4   1  15
2  10   8   6
3  11   8   7

Old answer:

In [37]: df1.values + df2.values
Out[37]:
array([[10, 12, 10],
       [ 4,  1, 15],
       [10,  8,  6],
       [11,  8,  7]], dtype=int64)

In [38]: pd.DataFrame(df1.values + df2.values, columns=df1.columns)
Out[38]:
    a   b   c
0  10  12  10
1   4   1  15
2  10   8   6
3  11   8   7
Sign up to request clarification or add additional context in comments.

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.