In [1]:
import pandas as pd
import numpy as np
from IPython.display import display

d = {'one' : pd.Series([1., 2., 3.], index=['a', 'b', 'c']),
     'two' : pd.Series([1., 2., 3., 4.], index=['a', 'b', 'c', 'd'])}
df = pd.DataFrame(d)
df


Out[1]:
one two
a 1.0 1.0
b 2.0 2.0
c 3.0 3.0
d NaN 4.0

In [2]:
pd.DataFrame(d, index=['d', 'b', 'a'])


Out[2]:
one two
d NaN 4.0
b 2.0 2.0
a 1.0 1.0

In [3]:
pd.DataFrame(d, index=['d', 'b', 'a'], columns=['two', 'three'])


Out[3]:
two three
d 4.0 NaN
b 2.0 NaN
a 1.0 NaN

In [4]:
df.index


Out[4]:
Index(['a', 'b', 'c', 'd'], dtype='object')

In [5]:
df.columns


Out[5]:
Index(['one', 'two'], dtype='object')

In [6]:
pd.DataFrame({('a', 'b'): {('A', 'B'): 1, ('A', 'C'): 2},
              ('a', 'a'): {('A', 'C'): 3, ('A', 'B'): 4},
              ('a', 'c'): {('A', 'B'): 5, ('A', 'C'): 6},
              ('b', 'a'): {('A', 'C'): 7, ('A', 'B'): 8},
              ('b', 'b'): {('A', 'D'): 9, ('A', 'B'): 10},
              ('a', 'c'): {('B', 'B'): 5, ('A', 'C'): 6},
              ('b', 'a'): {('B', 'C'): 7, ('A', 'B'): 8},
              ('b', 'b'): {('C', 'D'): 9, ('A', 'B'): 10},
             })


Out[6]:
a b
a b c a b
A B 4.0 1.0 NaN 8.0 10.0
C 3.0 2.0 6.0 NaN NaN
B B NaN NaN 5.0 NaN NaN
C NaN NaN NaN 7.0 NaN
C D NaN NaN NaN NaN 9.0

In [7]:
df1 = pd.DataFrame(np.random.randn(10, 4), columns=['A', 'B', 'C', 'D'])
df2 = pd.DataFrame(np.random.randn(7, 3), columns=['A', 'B', 'C'])
display(df1)
display(df2)
df1 + df2


A B C D
0 2.875659 -0.669906 -1.389389 1.031998
1 -3.115630 0.229889 0.560418 2.900070
2 -0.627304 -1.969705 -0.342508 1.234613
3 0.587640 0.206163 -0.462456 -0.875448
4 0.587897 -0.657549 -0.248151 2.004267
5 -0.100954 1.437910 -0.292142 1.537810
6 -1.720872 2.058474 1.340010 -0.057766
7 0.058660 0.091544 -0.679201 0.165960
8 0.835113 -1.134155 -0.460349 -0.981142
9 0.890261 0.084138 -2.267670 -0.107086
A B C
0 -0.022755 1.359770 -0.076051
1 1.421865 0.742217 -1.889878
2 -1.076558 0.423527 -0.978594
3 -0.017066 1.073382 -0.348797
4 -0.342486 1.268883 -1.748747
5 -0.496262 1.090121 0.764744
6 -0.983314 -1.129957 1.470675
Out[7]:
A B C D
0 2.852905 0.689864 -1.465440 NaN
1 -1.693765 0.972107 -1.329460 NaN
2 -1.703862 -1.546177 -1.321102 NaN
3 0.570574 1.279545 -0.811252 NaN
4 0.245410 0.611335 -1.996897 NaN
5 -0.597215 2.528032 0.472602 NaN
6 -2.704186 0.928517 2.810685 NaN
7 NaN NaN NaN NaN
8 NaN NaN NaN NaN
9 NaN NaN NaN NaN

In [18]:
df1 - df1.iloc[0]


Out[18]:
A B C D
0 0.000000 0.000000 0.000000 0.000000
1 -5.991290 0.899795 1.949806 -4.041483
2 -3.502963 -1.299799 1.046880 -2.456083
3 -2.288020 0.876069 0.926933 -1.361087
4 -2.287763 0.012357 1.141238 -1.146525
5 -2.976613 2.107816 1.097246 -1.879367
6 -4.596531 2.728380 2.729399 -1.867133
7 -2.816999 0.761450 0.710187 -2.106812
8 -2.040546 -0.464249 0.929039 -1.111507
9 -1.985398 0.754044 -0.878282 -2.863680

In [19]:
df1 - df1['A']


Out[19]:
A B C D 0 1 2 3 4 5 6 7 8 9
0 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
1 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
3 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
4 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
5 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
6 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
7 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
8 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
9 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN

In [10]:
df1.sub(df1['A'], axis=0)


Out[10]:
A B C D
0 0.0 -3.545565 -4.265048 -1.843662
1 0.0 3.345520 3.676048 6.015701
2 0.0 -1.342401 0.284795 1.861917
3 0.0 -0.381476 -1.050095 -1.463087
4 0.0 -1.245445 -0.836047 1.416370
5 0.0 1.538864 -0.191189 1.638763
6 0.0 3.779346 3.060882 1.663106
7 0.0 0.032884 -0.737861 0.107300
8 0.0 -1.969268 -1.295462 -1.816255
9 0.0 -0.806124 -3.157932 -0.997348

In [20]:
df1.sub(df1['A'], axis ='index')


Out[20]:
A B C D
0 0.0 -3.545565 -4.265048 -1.389389
1 0.0 3.345520 3.676048 0.560418
2 0.0 -1.342401 0.284795 -0.342508
3 0.0 -0.381476 -1.050095 -0.462456
4 0.0 -1.245445 -0.836047 -0.248151
5 0.0 1.538864 -0.191189 -0.292142
6 0.0 3.779346 3.060882 1.340010
7 0.0 0.032884 -0.737861 -0.679201
8 0.0 -1.969268 -1.295462 -0.460349
9 0.0 -0.806124 -3.157932 -2.267670

In [23]:
df1.sub(df1.iloc[0], axis ='columns')


Out[23]:
A B C D
0 0.000000 0.000000 0.000000 0.000000
1 -5.991290 0.899795 1.949806 -4.041483
2 -3.502963 -1.299799 1.046880 -2.456083
3 -2.288020 0.876069 0.926933 -1.361087
4 -2.287763 0.012357 1.141238 -1.146525
5 -2.976613 2.107816 1.097246 -1.879367
6 -4.596531 2.728380 2.729399 -1.867133
7 -2.816999 0.761450 0.710187 -2.106812
8 -2.040546 -0.464249 0.929039 -1.111507
9 -1.985398 0.754044 -0.878282 -2.863680

In [12]:
df1['D']=df1['A']+df1['C']
df1


Out[12]:
A B C D
0 2.875659 -0.669906 -1.389389 1.486271
1 -3.115630 0.229889 0.560418 -2.555213
2 -0.627304 -1.969705 -0.342508 -0.969812
3 0.587640 0.206163 -0.462456 0.125184
4 0.587897 -0.657549 -0.248151 0.339746
5 -0.100954 1.437910 -0.292142 -0.393096
6 -1.720872 2.058474 1.340010 -0.380862
7 0.058660 0.091544 -0.679201 -0.620541
8 0.835113 -1.134155 -0.460349 0.374764
9 0.890261 0.084138 -2.267670 -1.377409

In [13]:
np.asarray(df1)


Out[13]:
array([[ 2.87565918, -0.66990588, -1.38938853,  1.48627065],
       [-3.11563037,  0.22988936,  0.56041781, -2.55521256],
       [-0.62730371, -1.96970457, -0.34250828, -0.96981199],
       [ 0.58763956,  0.20616323, -0.46245562,  0.12518393],
       [ 0.58789652, -0.65754854, -0.2481509 ,  0.33974561],
       [-0.10095373,  1.43791032, -0.29214243, -0.39309616],
       [-1.72087201,  2.05847373,  1.34001015, -0.38086187],
       [ 0.05865996,  0.09154428, -0.67920141, -0.62054145],
       [ 0.83511294, -1.13415536, -0.46034904,  0.37476391],
       [ 0.89026119,  0.08413764, -2.26767039, -1.3774092 ]])

In [17]:
df1.values


Out[17]:
array([[ 2.87565918, -0.66990588, -1.38938853,  1.48627065],
       [-3.11563037,  0.22988936,  0.56041781, -2.55521256],
       [-0.62730371, -1.96970457, -0.34250828, -0.96981199],
       [ 0.58763956,  0.20616323, -0.46245562,  0.12518393],
       [ 0.58789652, -0.65754854, -0.2481509 ,  0.33974561],
       [-0.10095373,  1.43791032, -0.29214243, -0.39309616],
       [-1.72087201,  2.05847373,  1.34001015, -0.38086187],
       [ 0.05865996,  0.09154428, -0.67920141, -0.62054145],
       [ 0.83511294, -1.13415536, -0.46034904,  0.37476391],
       [ 0.89026119,  0.08413764, -2.26767039, -1.3774092 ]])

In [24]:
df1.agg(['sum'])


Out[24]:
A B C D
sum 0.27047 -0.323196 -4.241439 -3.970969

In [25]:
df1.agg(['sum', 'mean'])


Out[25]:
A B C D
sum 0.270470 -0.323196 -4.241439 -3.970969
mean 0.027047 -0.032320 -0.424144 -0.397097

In [ ]: