In [1]:
import pandas as pd

In [2]:
import numpy as np

In [3]:
from pandas import DataFrame, Series

In [4]:
s1 = Series([7.3, -2.5, 3.4, 1.5], index=['a', 'c', 'd', 'e'])

In [5]:
s2 = Series([-2.1, 3.6, -1.5, 4, 3.1], index=['a', 'c', 'e', 'f', 'g'])

In [6]:
s1


Out[6]:
a    7.3
c   -2.5
d    3.4
e    1.5
dtype: float64

In [7]:
s2


Out[7]:
a   -2.1
c    3.6
e   -1.5
f    4.0
g    3.1
dtype: float64

In [8]:
s1 + s2


Out[8]:
a    5.2
c    1.1
d    NaN
e    0.0
f    NaN
g    NaN
dtype: float64

In [9]:
df1 = DataFrame(np.arange(9.).reshape((3, 3)), 
                columns=list('bcd'), index=['Ohio', 'Texas', 'Colorado'])

In [10]:
df2 = DataFrame(np.arange(12.).reshape((4, 3)), 
                columns=list('bde'), index=['Utah', 'Ohio', 'Texas', 'Oregon'])

In [11]:
df1


Out[11]:
b c d
Ohio 0.0 1.0 2.0
Texas 3.0 4.0 5.0
Colorado 6.0 7.0 8.0

In [12]:
df2


Out[12]:
b d e
Utah 0.0 1.0 2.0
Ohio 3.0 4.0 5.0
Texas 6.0 7.0 8.0
Oregon 9.0 10.0 11.0

In [13]:
df1 + df2


Out[13]:
b c d e
Colorado NaN NaN NaN NaN
Ohio 3.0 NaN 6.0 NaN
Oregon NaN NaN NaN NaN
Texas 9.0 NaN 12.0 NaN
Utah NaN NaN NaN NaN

In [14]:
df1 = DataFrame(np.arange(12.).reshape((3, 4)), columns=list('abcd'))

In [15]:
df2 = DataFrame(np.arange(20.).reshape((4, 5)), columns=list('abcde'))

In [16]:
df1


Out[16]:
a b c d
0 0.0 1.0 2.0 3.0
1 4.0 5.0 6.0 7.0
2 8.0 9.0 10.0 11.0

In [17]:
df2


Out[17]:
a b c d e
0 0.0 1.0 2.0 3.0 4.0
1 5.0 6.0 7.0 8.0 9.0
2 10.0 11.0 12.0 13.0 14.0
3 15.0 16.0 17.0 18.0 19.0

In [18]:
df1 + df2


Out[18]:
a b c d e
0 0.0 2.0 4.0 6.0 NaN
1 9.0 11.0 13.0 15.0 NaN
2 18.0 20.0 22.0 24.0 NaN
3 NaN NaN NaN NaN NaN

In [19]:
df1.add(df2, fill_value=0)


Out[19]:
a b c d e
0 0.0 2.0 4.0 6.0 4.0
1 9.0 11.0 13.0 15.0 9.0
2 18.0 20.0 22.0 24.0 14.0
3 15.0 16.0 17.0 18.0 19.0

In [20]:
df1.reindex(columns=df2.columns, fill_value=0)


Out[20]:
a b c d e
0 0.0 1.0 2.0 3.0 0
1 4.0 5.0 6.0 7.0 0
2 8.0 9.0 10.0 11.0 0

In [21]:
arr = np.arange(12.).reshape((3,4))

In [22]:
arr


Out[22]:
array([[  0.,   1.,   2.,   3.],
       [  4.,   5.,   6.,   7.],
       [  8.,   9.,  10.,  11.]])

In [23]:
arr[0]


Out[23]:
array([ 0.,  1.,  2.,  3.])

In [25]:
arr - arr[0]


Out[25]:
array([[ 0.,  0.,  0.,  0.],
       [ 4.,  4.,  4.,  4.],
       [ 8.,  8.,  8.,  8.]])

In [26]:
frame = DataFrame(np.arange(12.).reshape((4, 3)), 
                  columns=list('bde'), index=['Utah', 'Ohio', 'Texas', 'Oregon'])

In [27]:
frame


Out[27]:
b d e
Utah 0.0 1.0 2.0
Ohio 3.0 4.0 5.0
Texas 6.0 7.0 8.0
Oregon 9.0 10.0 11.0

In [29]:
series = frame.ix[0]

In [30]:
series


Out[30]:
b    0.0
d    1.0
e    2.0
Name: Utah, dtype: float64

In [31]:
frame - series


Out[31]:
b d e
Utah 0.0 0.0 0.0
Ohio 3.0 3.0 3.0
Texas 6.0 6.0 6.0
Oregon 9.0 9.0 9.0

In [32]:
series2 = Series(range(3), index=['b', 'e', 'f'])

In [38]:
series2


Out[38]:
b    0
e    1
f    2
dtype: int64

In [40]:
frame


Out[40]:
b d e
Utah 0.0 1.0 2.0
Ohio 3.0 4.0 5.0
Texas 6.0 7.0 8.0
Oregon 9.0 10.0 11.0

In [39]:
frame + series2


Out[39]:
b d e f
Utah 0.0 NaN 3.0 NaN
Ohio 3.0 NaN 6.0 NaN
Texas 6.0 NaN 9.0 NaN
Oregon 9.0 NaN 12.0 NaN

In [34]:
series3 = frame['d']

In [35]:
frame


Out[35]:
b d e
Utah 0.0 1.0 2.0
Ohio 3.0 4.0 5.0
Texas 6.0 7.0 8.0
Oregon 9.0 10.0 11.0

In [36]:
series3


Out[36]:
Utah       1.0
Ohio       4.0
Texas      7.0
Oregon    10.0
Name: d, dtype: float64

In [37]:
frame.sub(series3, axis=0)


Out[37]:
b d e
Utah -1.0 0.0 1.0
Ohio -1.0 0.0 1.0
Texas -1.0 0.0 1.0
Oregon -1.0 0.0 1.0