データの結合


In [2]:
import pandas as pd

データの結合:横につなぐ、列方向

merge,join,concatについて説明します。

まずディクショナリからサンプルのデータフレームを作ります。


In [27]:
df1 = pd.DataFrame({'key':['b','b','a','c','a','a','b'],'data1':range(7)})
df2 = pd.DataFrame({'key':['a','b','d','a'],'data2':range(4)})

In [28]:
df1


Out[28]:
data1 key
0 0 b
1 1 b
2 2 a
3 3 c
4 4 a
5 5 a
6 6 b

In [29]:
df2


Out[29]:
data2 key
0 0 a
1 1 b
2 2 d
3 3 a

In [30]:
print(df1['key'].unique())
print(df2['key'].unique())


['b' 'a' 'c']
['a' 'b' 'd']

内部結合、左外部結合、完全外部結合を使い分ける

  • 内部結合

In [31]:
pd.merge(df1,df2,on='key',how='inner')


Out[31]:
data1 key data2
0 0 b 1
1 1 b 1
2 6 b 1
3 2 a 0
4 2 a 3
5 4 a 0
6 4 a 3
7 5 a 0
8 5 a 3

df1のkeyとdf2のkey両方に存在する値のみ結合され、すべての組が新しいテーブルになります。

  • 完全外部結合

In [32]:
pd.merge(df1,df2,on='key',how='outer')


Out[32]:
data1 key data2
0 0.0 b 1.0
1 1.0 b 1.0
2 6.0 b 1.0
3 2.0 a 0.0
4 2.0 a 3.0
5 4.0 a 0.0
6 4.0 a 3.0
7 5.0 a 0.0
8 5.0 a 3.0
9 3.0 c NaN
10 NaN d 2.0

df1のkeyとdf2のkeyの少なくとも一方に存在する値が結合され、すべての組が新しいテーブルになります。

  • 左外部結合

In [33]:
pd.merge(df1,df2,on='key',how='left')


Out[33]:
data1 key data2
0 0 b 1.0
1 1 b 1.0
2 2 a 0.0
3 2 a 3.0
4 3 c NaN
5 4 a 0.0
6 4 a 3.0
7 5 a 0.0
8 5 a 3.0
9 6 b 1.0

df1のkeyに存在する値はすべて、df2のkeyはdf1のkeyにも存在するもののみ結合され、すべての組が新しいテーブルになります。

  • 右外部結合

In [34]:
pd.merge(df1,df2,on='key',how='right')


Out[34]:
data1 key data2
0 0.0 b 1
1 1.0 b 1
2 6.0 b 1
3 2.0 a 0
4 4.0 a 0
5 5.0 a 0
6 2.0 a 3
7 4.0 a 3
8 5.0 a 3
9 NaN d 2

右外部結合と引数のデータフレームの順序を入れ替えた左外部結合は同じです。


In [35]:
pd.merge(df2,df1,on='key',how='left')


Out[35]:
data2 key data1
0 0 a 2.0
1 0 a 4.0
2 0 a 5.0
3 1 b 0.0
4 1 b 1.0
5 1 b 6.0
6 2 d NaN
7 3 a 2.0
8 3 a 4.0
9 3 a 5.0

デフォルトは内部結合です。


In [37]:
pd.merge(df1,df2)


Out[37]:
data1 key data2
0 0 b 1
1 1 b 1
2 6 b 1
3 2 a 0
4 2 a 3
5 4 a 0
6 4 a 3
7 5 a 0
8 5 a 3

keyとする列名が異なる場合


In [38]:
df3 = pd.DataFrame({'lkey':['b','b','a','c','a','a','b'],'data1':range(7)})
df4 = pd.DataFrame({'rkey':['a','b','c','a'],'data2':range(4)})

In [39]:
df3


Out[39]:
data1 lkey
0 0 b
1 1 b
2 2 a
3 3 c
4 4 a
5 5 a
6 6 b

In [40]:
df4


Out[40]:
data2 rkey
0 0 a
1 1 b
2 2 c
3 3 a

In [42]:
pd.merge(df3,df4)


---------------------------------------------------------------------------
MergeError                                Traceback (most recent call last)
<ipython-input-42-071ca2b8fdf8> in <module>()
----> 1 pd.merge(df3,df4)

/anaconda/lib/python3.6/site-packages/pandas/tools/merge.py in merge(left, right, how, on, left_on, right_on, left_index, right_index, sort, suffixes, copy, indicator)
     59                          right_on=right_on, left_index=left_index,
     60                          right_index=right_index, sort=sort, suffixes=suffixes,
---> 61                          copy=copy, indicator=indicator)
     62     return op.get_result()
     63 if __debug__:

/anaconda/lib/python3.6/site-packages/pandas/tools/merge.py in __init__(self, left, right, how, on, left_on, right_on, axis, left_index, right_index, sort, suffixes, copy, indicator)
    536             warnings.warn(msg, UserWarning)
    537 
--> 538         self._validate_specification()
    539 
    540         # note this function has side effects

/anaconda/lib/python3.6/site-packages/pandas/tools/merge.py in _validate_specification(self)
    881                     self.right.columns)
    882                 if len(common_cols) == 0:
--> 883                     raise MergeError('No common columns to perform merge on')
    884                 if not common_cols.is_unique:
    885                     raise MergeError("Data columns not unique: %s"

MergeError: No common columns to perform merge on

left_on,right_onでkeyを指定する。


In [41]:
pd.merge(df3,df4,left_on='lkey',right_on='rkey')


Out[41]:
data1 lkey data2 rkey
0 0 b 1 b
1 1 b 1 b
2 6 b 1 b
3 2 a 0 a
4 2 a 3 a
5 4 a 0 a
6 4 a 3 a
7 5 a 0 a
8 5 a 3 a
9 3 c 2 c

インデックスで結合することもできます。


In [43]:
pd.merge(df3,df4,left_index=True,right_index=True)


Out[43]:
data1 lkey data2 rkey
0 0 b 0 a
1 1 b 1 b
2 2 a 2 c
3 3 c 3 a

In [44]:
pd.merge(df3,df4,left_index=True,right_index=True,how='outer')


Out[44]:
data1 lkey data2 rkey
0 0 b 0.0 a
1 1 b 1.0 b
2 2 a 2.0 c
3 3 c 3.0 a
4 4 a NaN NaN
5 5 a NaN NaN
6 6 b NaN NaN

キーを列かインデックスか指定して結合します。


In [45]:
pd.merge(df3,df4,left_on='data1',right_index=True,how='outer')


Out[45]:
data1 lkey data2 rkey
0 0 b 0.0 a
1 1 b 1.0 b
2 2 a 2.0 c
3 3 c 3.0 a
4 4 a NaN NaN
5 5 a NaN NaN
6 6 b NaN NaN

列名が重複する場合、自動でsuffixesがふられます。


In [47]:
df5 = pd.DataFrame({'key':['b','b','a','c','a','a','b'],'data':range(7)})
df6 = pd.DataFrame({'key':['a','b','d','a'],'data':range(4)})

In [48]:
df5


Out[48]:
data key
0 0 b
1 1 b
2 2 a
3 3 c
4 4 a
5 5 a
6 6 b

In [49]:
df6


Out[49]:
data key
0 0 a
1 1 b
2 2 d
3 3 a

In [50]:
pd.merge(df5,df6,on='key',how='left')


Out[50]:
data_x key data_y
0 0 b 1.0
1 1 b 1.0
2 2 a 0.0
3 2 a 3.0
4 3 c NaN
5 4 a 0.0
6 4 a 3.0
7 5 a 0.0
8 5 a 3.0
9 6 b 1.0

In [52]:
pd.merge(df5,df6,on='key',how='left',suffixes=('_1','_2'))


Out[52]:
data_1 key data_2
0 0 b 1.0
1 1 b 1.0
2 2 a 0.0
3 2 a 3.0
4 3 c NaN
5 4 a 0.0
6 4 a 3.0
7 5 a 0.0
8 5 a 3.0
9 6 b 1.0

データフレーム型のオブジェクトに対するメソッドもあります。


In [53]:
df1.merge(df2,on='key',how='left')


Out[53]:
data1 key data2
0 0 b 1.0
1 1 b 1.0
2 2 a 0.0
3 2 a 3.0
4 3 c NaN
5 4 a 0.0
6 4 a 3.0
7 5 a 0.0
8 5 a 3.0
9 6 b 1.0

引数はpd.merge(df1,df2)もdf1.merge(df2)も同じです。

共通の列名を持たず、インデックスで結合する場合joinが使えます。


In [56]:
df3.join(df4)


Out[56]:
data1 lkey data2 rkey
0 0 b 0.0 a
1 1 b 1.0 b
2 2 a 2.0 c
3 3 c 3.0 a
4 4 a NaN NaN
5 5 a NaN NaN
6 6 b NaN NaN

同じ列名があると使えません。


In [57]:
df1.join(df2)


---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-57-bcb327590cf1> in <module>()
----> 1 df1.join(df2)

/anaconda/lib/python3.6/site-packages/pandas/core/frame.py in join(self, other, on, how, lsuffix, rsuffix, sort)
   4553         # For SparseDataFrame's benefit
   4554         return self._join_compat(other, on=on, how=how, lsuffix=lsuffix,
-> 4555                                  rsuffix=rsuffix, sort=sort)
   4556 
   4557     def _join_compat(self, other, on=None, how='left', lsuffix='', rsuffix='',

/anaconda/lib/python3.6/site-packages/pandas/core/frame.py in _join_compat(self, other, on, how, lsuffix, rsuffix, sort)
   4567             return merge(self, other, left_on=on, how=how,
   4568                          left_index=on is None, right_index=True,
-> 4569                          suffixes=(lsuffix, rsuffix), sort=sort)
   4570         else:
   4571             if on is not None:

/anaconda/lib/python3.6/site-packages/pandas/tools/merge.py in merge(left, right, how, on, left_on, right_on, left_index, right_index, sort, suffixes, copy, indicator)
     60                          right_index=right_index, sort=sort, suffixes=suffixes,
     61                          copy=copy, indicator=indicator)
---> 62     return op.get_result()
     63 if __debug__:
     64     merge.__doc__ = _merge_doc % '\nleft : DataFrame'

/anaconda/lib/python3.6/site-packages/pandas/tools/merge.py in get_result(self)
    554 
    555         llabels, rlabels = items_overlap_with_suffix(ldata.items, lsuf,
--> 556                                                      rdata.items, rsuf)
    557 
    558         lindexers = {1: left_indexer} if left_indexer is not None else {}

/anaconda/lib/python3.6/site-packages/pandas/core/internals.py in items_overlap_with_suffix(left, lsuffix, right, rsuffix)
   4697         if not lsuffix and not rsuffix:
   4698             raise ValueError('columns overlap but no suffix specified: %s' %
-> 4699                              to_rename)
   4700 
   4701         def lrenamer(x):

ValueError: columns overlap but no suffix specified: Index(['key'], dtype='object')

In [58]:
left = pd.DataFrame([[1.,2.],[3.,4.],[5.,6.]],index=['a','c','e'],columns=['Ohio','Nevada'])
right = pd.DataFrame([[7.,8.],[9.,10.],[11.,12.],[13.,14.]],index=['b','c','d','e'],columns=['Missoure','Alabama'])

In [59]:
left


Out[59]:
Ohio Nevada
a 1.0 2.0
c 3.0 4.0
e 5.0 6.0

In [60]:
right


Out[60]:
Missoure Alabama
b 7.0 8.0
c 9.0 10.0
d 11.0 12.0
e 13.0 14.0

In [61]:
left.join(right,how='outer')


Out[61]:
Ohio Nevada Missoure Alabama
a 1.0 2.0 NaN NaN
b NaN NaN 7.0 8.0
c 3.0 4.0 9.0 10.0
d NaN NaN 11.0 12.0
e 5.0 6.0 13.0 14.0

In [68]:
another = pd.DataFrame([[7.,8.],[9.,10.],[11.,12.],[13.,14.]],index=['a','c','e','f'],columns=['New York','Oregon'])

In [69]:
another


Out[69]:
New York Oregon
a 7.0 8.0
c 9.0 10.0
e 11.0 12.0
f 13.0 14.0

joinは複数のデータフレームをまとめて結合することもできます。


In [71]:
left.join([right,another])


Out[71]:
Ohio Nevada Missoure Alabama New York Oregon
a 1.0 2.0 NaN NaN 7.0 8.0
c 3.0 4.0 9.0 10.0 9.0 10.0
e 5.0 6.0 13.0 14.0 11.0 12.0

後ほど説明するconcatも使えます。

  • 分析方法にもよるが、keyは一意(unique)なものを選択するのが基本です。

In [ ]:

データの連結:縦につなぐ、行方向

まずデータフレームを作ります。


In [75]:
s1 = pd.Series([0,1],index=['a','b'])
s2 = pd.Series([2,3,4],index=['c','d','e'])
s3 = pd.Series([5,6],index=['f','g'])

In [ ]:
pd.concat([s1,s2])

複数まとめて連結できます。


In [79]:
pd.concat([s1,s2,s3])


Out[79]:
a    0
b    1
c    2
d    3
e    4
f    5
g    6
dtype: int64

縦横どちらにも使える:concat

横方向に結合し、mergeのようにも使えます。


In [80]:
pd.concat([s1,s2,s3],axis=1)


Out[80]:
0 1 2
a 0.0 NaN NaN
b 1.0 NaN NaN
c NaN 2.0 NaN
d NaN 3.0 NaN
e NaN 4.0 NaN
f NaN NaN 5.0
g NaN NaN 6.0

縦方向はaxis=0で、デフォルトは縦方向です。


In [81]:
pd.concat([s1,s2,s3],axis=0)


Out[81]:
a    0
b    1
c    2
d    3
e    4
f    5
g    6
dtype: int64

In [82]:
s4 = pd.concat([s1 * 5,s3])
s4


Out[82]:
a    0
b    5
f    5
g    6
dtype: int64

concatによる結合はデフォルトは完全外部結合です。


In [83]:
pd.concat([s1,s4],axis=1)


Out[83]:
0 1
a 0.0 0
b 1.0 5
f NaN 5
g NaN 6

インデックスをキーとし内部結合を指定することができます。


In [84]:
pd.concat([s1,s4],axis=1,join='inner')


Out[84]:
0 1
a 0 0
b 1 5

In [1]:
import pandas_datareader.data as web
from datetime import datetime

In [24]:
ticker1 = ['AAPL','IBM']
start1 = '2016-01-01'#datetime(2016,1,1)
end1 = '2016-05-31'#datetime(2016,12,31)
df1 = web.DataReader(ticker1,'yahoo',start1,end1)['Close',:,:]
ticker2 = ['MSFT','GOOG']
start2 = '2016-08-01'#datetime(2016,1,1)
end2 = '2016-12-31'#datetime(2016,12,31)
df2 = web.DataReader(ticker2,'yahoo',start2,end2)['Close',:,:]
ticker3 = ['AAPL','IBM','MSFT','GOOG']
start3 = '2016-05-01'#datetime(2016,1,1)
end3 = '2016-8-31'#datetime(2016,12,31)
df3 = web.DataReader(ticker3,'yahoo',start3,end3)['Close',:,:]

In [25]:
df1


Out[25]:
AAPL IBM
Date
2016-01-04 105.349998 135.949997
2016-01-05 102.709999 135.850006
2016-01-06 100.699997 135.169998
2016-01-07 96.449997 132.860001
2016-01-08 96.959999 131.630005
2016-01-11 98.529999 133.229996
2016-01-12 99.959999 132.899994
2016-01-13 97.389999 131.169998
2016-01-14 99.519997 132.910004
2016-01-15 97.129997 130.029999
2016-01-19 96.660004 128.110001
2016-01-20 96.790001 121.860001
2016-01-21 96.300003 122.910004
2016-01-22 101.419998 122.500000
2016-01-25 99.440002 122.080002
2016-01-26 99.989998 122.589996
2016-01-27 93.419998 120.959999
2016-01-28 94.089996 122.220001
2016-01-29 97.339996 124.790001
2016-02-01 96.430000 124.830002
2016-02-02 94.480003 122.940002
2016-02-03 96.349998 124.720001
2016-02-04 96.599998 127.650002
2016-02-05 94.019997 128.570007
2016-02-08 95.010002 126.980003
2016-02-09 94.989998 124.070000
2016-02-10 94.269997 120.190002
2016-02-11 93.699997 117.849998
2016-02-12 93.989998 121.040001
2016-02-16 96.639999 122.739998
... ... ...
2016-04-19 106.910004 144.000000
2016-04-20 107.129997 146.110001
2016-04-21 105.970001 149.300003
2016-04-22 105.680000 148.500000
2016-04-25 105.080002 148.809998
2016-04-26 104.349998 149.080002
2016-04-27 97.820000 150.470001
2016-04-28 94.830002 147.070007
2016-04-29 93.739998 145.940002
2016-05-02 93.639999 145.270004
2016-05-03 95.180000 144.130005
2016-05-04 94.190002 144.250000
2016-05-05 93.239998 146.470001
2016-05-06 92.720001 147.289993
2016-05-09 92.790001 147.339996
2016-05-10 93.419998 149.970001
2016-05-11 92.510002 148.949997
2016-05-12 90.339996 148.839996
2016-05-13 90.519997 147.720001
2016-05-16 93.879997 149.460007
2016-05-17 93.489998 148.000000
2016-05-18 94.559998 147.339996
2016-05-19 94.199997 144.929993
2016-05-20 95.220001 147.250000
2016-05-23 96.430000 146.770004
2016-05-24 97.900002 148.309998
2016-05-25 99.620003 151.690002
2016-05-26 100.410004 152.440002
2016-05-27 100.349998 152.839996
2016-05-31 99.860001 153.740005

103 rows × 2 columns


In [26]:
df2


Out[26]:
GOOG MSFT
Date
2016-08-01 772.880005 56.580002
2016-08-02 771.070007 56.580002
2016-08-03 773.179993 56.970001
2016-08-04 771.609985 57.389999
2016-08-05 782.219971 57.959999
2016-08-08 781.760010 58.060001
2016-08-09 784.260010 58.200001
2016-08-10 784.679993 58.020000
2016-08-11 784.849976 58.299999
2016-08-12 783.219971 57.939999
2016-08-15 782.440002 58.119999
2016-08-16 777.140015 57.439999
2016-08-17 779.909973 57.560001
2016-08-18 777.500000 57.599998
2016-08-19 775.419983 57.619999
2016-08-22 772.150024 57.669998
2016-08-23 772.080017 57.889999
2016-08-24 769.640015 57.950001
2016-08-25 769.409973 58.169998
2016-08-26 769.539978 58.029999
2016-08-29 772.150024 58.099998
2016-08-30 769.090027 57.889999
2016-08-31 767.049988 57.459999
2016-09-01 768.780029 57.590000
2016-09-02 771.460022 57.669998
2016-09-06 780.080017 57.610001
2016-09-07 780.349976 57.660000
2016-09-08 775.320007 57.430000
2016-09-09 759.659973 56.209999
2016-09-12 769.020020 57.049999
... ... ...
2016-11-17 771.229980 60.639999
2016-11-18 760.539978 60.349998
2016-11-21 769.200012 60.860001
2016-11-22 768.270020 61.119999
2016-11-23 760.989990 60.400002
2016-11-25 761.679993 60.529999
2016-11-28 768.239990 60.610001
2016-11-29 770.840027 61.090000
2016-11-30 758.039978 60.259998
2016-12-01 747.919983 59.200001
2016-12-02 750.500000 59.250000
2016-12-05 762.520020 60.220001
2016-12-06 759.109985 59.950001
2016-12-07 771.190002 61.369999
2016-12-08 776.419983 61.009998
2016-12-09 789.289978 61.970001
2016-12-12 789.270020 62.169998
2016-12-13 796.099976 62.980000
2016-12-14 797.070007 62.680000
2016-12-15 797.849976 62.580002
2016-12-16 790.799988 62.299999
2016-12-19 794.200012 63.619999
2016-12-20 796.419983 63.540001
2016-12-21 794.559998 63.540001
2016-12-22 791.260010 63.549999
2016-12-23 789.909973 63.240002
2016-12-27 791.549988 63.279999
2016-12-28 785.049988 62.990002
2016-12-29 782.789978 62.900002
2016-12-30 771.820007 62.139999

107 rows × 2 columns


In [27]:
df3


Out[27]:
AAPL GOOG IBM MSFT
Date
2016-05-02 93.639999 698.210022 145.270004 50.610001
2016-05-03 95.180000 692.359985 144.130005 49.779999
2016-05-04 94.190002 695.700012 144.250000 49.869999
2016-05-05 93.239998 701.429993 146.470001 49.939999
2016-05-06 92.720001 711.119995 147.289993 50.389999
2016-05-09 92.790001 712.900024 147.339996 50.070000
2016-05-10 93.419998 723.179993 149.970001 51.020000
2016-05-11 92.510002 715.289978 148.949997 51.049999
2016-05-12 90.339996 713.309998 148.839996 51.509998
2016-05-13 90.519997 710.830017 147.720001 51.080002
2016-05-16 93.879997 716.489990 149.460007 51.830002
2016-05-17 93.489998 706.229980 148.000000 50.509998
2016-05-18 94.559998 706.630005 147.339996 50.810001
2016-05-19 94.199997 700.320007 144.929993 50.320000
2016-05-20 95.220001 709.739990 147.250000 50.619999
2016-05-23 96.430000 704.239990 146.770004 50.029999
2016-05-24 97.900002 720.090027 148.309998 51.590000
2016-05-25 99.620003 725.270020 151.690002 52.119999
2016-05-26 100.410004 724.119995 152.440002 51.889999
2016-05-27 100.349998 732.659973 152.839996 52.320000
2016-05-31 99.860001 735.719971 153.740005 53.000000
2016-06-01 98.459999 734.150024 152.509995 52.849998
2016-06-02 97.720001 730.400024 153.500000 52.480000
2016-06-03 97.919998 722.340027 152.889999 51.790001
2016-06-06 98.629997 716.549988 152.729996 52.130001
2016-06-07 99.029999 716.650024 153.330002 52.099998
2016-06-08 98.940002 728.280029 154.000000 52.040001
2016-06-09 99.650002 728.580017 153.419998 51.619999
2016-06-10 98.830002 719.409973 152.369995 51.480000
2016-06-13 97.339996 718.359985 151.279999 50.139999
... ... ... ... ...
2016-07-21 99.430000 738.630005 160.449997 55.799999
2016-07-22 98.660004 742.739990 162.070007 56.570000
2016-07-25 97.339996 739.770020 162.649994 56.730000
2016-07-26 96.669998 738.419983 162.119995 56.759998
2016-07-27 102.949997 741.770020 161.830002 56.189999
2016-07-28 104.339996 745.909973 161.369995 56.209999
2016-07-29 104.209999 768.789978 160.619995 56.680000
2016-08-01 106.050003 772.880005 161.449997 56.580002
2016-08-02 104.480003 771.070007 160.580002 56.580002
2016-08-03 105.790001 773.179993 160.669998 56.970001
2016-08-04 105.870003 771.609985 161.550003 57.389999
2016-08-05 107.480003 782.219971 163.500000 57.959999
2016-08-08 108.370003 781.760010 162.039993 58.060001
2016-08-09 108.809998 784.260010 161.770004 58.200001
2016-08-10 108.000000 784.679993 162.080002 58.020000
2016-08-11 107.930000 784.849976 163.529999 58.299999
2016-08-12 108.180000 783.219971 161.949997 57.939999
2016-08-15 109.480003 782.440002 161.880005 58.119999
2016-08-16 109.379997 777.140015 160.699997 57.439999
2016-08-17 109.220001 779.909973 160.440002 57.560001
2016-08-18 109.080002 777.500000 161.360001 57.599998
2016-08-19 109.360001 775.419983 160.039993 57.619999
2016-08-22 108.510002 772.150024 160.000000 57.669998
2016-08-23 108.849998 772.080017 160.259995 57.889999
2016-08-24 108.029999 769.640015 159.050003 57.950001
2016-08-25 107.570000 769.409973 158.630005 58.169998
2016-08-26 106.940002 769.539978 158.320007 58.029999
2016-08-29 106.820000 772.150024 159.720001 58.099998
2016-08-30 106.000000 769.090027 159.399994 57.889999
2016-08-31 106.099998 767.049988 158.880005 57.459999

86 rows × 4 columns


In [28]:
pd.concat([df1,df3],axis=0)


Out[28]:
AAPL GOOG IBM MSFT
Date
2016-01-04 105.349998 NaN 135.949997 NaN
2016-01-05 102.709999 NaN 135.850006 NaN
2016-01-06 100.699997 NaN 135.169998 NaN
2016-01-07 96.449997 NaN 132.860001 NaN
2016-01-08 96.959999 NaN 131.630005 NaN
2016-01-11 98.529999 NaN 133.229996 NaN
2016-01-12 99.959999 NaN 132.899994 NaN
2016-01-13 97.389999 NaN 131.169998 NaN
2016-01-14 99.519997 NaN 132.910004 NaN
2016-01-15 97.129997 NaN 130.029999 NaN
2016-01-19 96.660004 NaN 128.110001 NaN
2016-01-20 96.790001 NaN 121.860001 NaN
2016-01-21 96.300003 NaN 122.910004 NaN
2016-01-22 101.419998 NaN 122.500000 NaN
2016-01-25 99.440002 NaN 122.080002 NaN
2016-01-26 99.989998 NaN 122.589996 NaN
2016-01-27 93.419998 NaN 120.959999 NaN
2016-01-28 94.089996 NaN 122.220001 NaN
2016-01-29 97.339996 NaN 124.790001 NaN
2016-02-01 96.430000 NaN 124.830002 NaN
2016-02-02 94.480003 NaN 122.940002 NaN
2016-02-03 96.349998 NaN 124.720001 NaN
2016-02-04 96.599998 NaN 127.650002 NaN
2016-02-05 94.019997 NaN 128.570007 NaN
2016-02-08 95.010002 NaN 126.980003 NaN
2016-02-09 94.989998 NaN 124.070000 NaN
2016-02-10 94.269997 NaN 120.190002 NaN
2016-02-11 93.699997 NaN 117.849998 NaN
2016-02-12 93.989998 NaN 121.040001 NaN
2016-02-16 96.639999 NaN 122.739998 NaN
... ... ... ... ...
2016-07-21 99.430000 738.630005 160.449997 55.799999
2016-07-22 98.660004 742.739990 162.070007 56.570000
2016-07-25 97.339996 739.770020 162.649994 56.730000
2016-07-26 96.669998 738.419983 162.119995 56.759998
2016-07-27 102.949997 741.770020 161.830002 56.189999
2016-07-28 104.339996 745.909973 161.369995 56.209999
2016-07-29 104.209999 768.789978 160.619995 56.680000
2016-08-01 106.050003 772.880005 161.449997 56.580002
2016-08-02 104.480003 771.070007 160.580002 56.580002
2016-08-03 105.790001 773.179993 160.669998 56.970001
2016-08-04 105.870003 771.609985 161.550003 57.389999
2016-08-05 107.480003 782.219971 163.500000 57.959999
2016-08-08 108.370003 781.760010 162.039993 58.060001
2016-08-09 108.809998 784.260010 161.770004 58.200001
2016-08-10 108.000000 784.679993 162.080002 58.020000
2016-08-11 107.930000 784.849976 163.529999 58.299999
2016-08-12 108.180000 783.219971 161.949997 57.939999
2016-08-15 109.480003 782.440002 161.880005 58.119999
2016-08-16 109.379997 777.140015 160.699997 57.439999
2016-08-17 109.220001 779.909973 160.440002 57.560001
2016-08-18 109.080002 777.500000 161.360001 57.599998
2016-08-19 109.360001 775.419983 160.039993 57.619999
2016-08-22 108.510002 772.150024 160.000000 57.669998
2016-08-23 108.849998 772.080017 160.259995 57.889999
2016-08-24 108.029999 769.640015 159.050003 57.950001
2016-08-25 107.570000 769.409973 158.630005 58.169998
2016-08-26 106.940002 769.539978 158.320007 58.029999
2016-08-29 106.820000 772.150024 159.720001 58.099998
2016-08-30 106.000000 769.090027 159.399994 57.889999
2016-08-31 106.099998 767.049988 158.880005 57.459999

189 rows × 4 columns


In [29]:
pd.concat([df1,df3],axis=1)


Out[29]:
AAPL IBM AAPL GOOG IBM MSFT
Date
2016-01-04 105.349998 135.949997 NaN NaN NaN NaN
2016-01-05 102.709999 135.850006 NaN NaN NaN NaN
2016-01-06 100.699997 135.169998 NaN NaN NaN NaN
2016-01-07 96.449997 132.860001 NaN NaN NaN NaN
2016-01-08 96.959999 131.630005 NaN NaN NaN NaN
2016-01-11 98.529999 133.229996 NaN NaN NaN NaN
2016-01-12 99.959999 132.899994 NaN NaN NaN NaN
2016-01-13 97.389999 131.169998 NaN NaN NaN NaN
2016-01-14 99.519997 132.910004 NaN NaN NaN NaN
2016-01-15 97.129997 130.029999 NaN NaN NaN NaN
2016-01-19 96.660004 128.110001 NaN NaN NaN NaN
2016-01-20 96.790001 121.860001 NaN NaN NaN NaN
2016-01-21 96.300003 122.910004 NaN NaN NaN NaN
2016-01-22 101.419998 122.500000 NaN NaN NaN NaN
2016-01-25 99.440002 122.080002 NaN NaN NaN NaN
2016-01-26 99.989998 122.589996 NaN NaN NaN NaN
2016-01-27 93.419998 120.959999 NaN NaN NaN NaN
2016-01-28 94.089996 122.220001 NaN NaN NaN NaN
2016-01-29 97.339996 124.790001 NaN NaN NaN NaN
2016-02-01 96.430000 124.830002 NaN NaN NaN NaN
2016-02-02 94.480003 122.940002 NaN NaN NaN NaN
2016-02-03 96.349998 124.720001 NaN NaN NaN NaN
2016-02-04 96.599998 127.650002 NaN NaN NaN NaN
2016-02-05 94.019997 128.570007 NaN NaN NaN NaN
2016-02-08 95.010002 126.980003 NaN NaN NaN NaN
2016-02-09 94.989998 124.070000 NaN NaN NaN NaN
2016-02-10 94.269997 120.190002 NaN NaN NaN NaN
2016-02-11 93.699997 117.849998 NaN NaN NaN NaN
2016-02-12 93.989998 121.040001 NaN NaN NaN NaN
2016-02-16 96.639999 122.739998 NaN NaN NaN NaN
... ... ... ... ... ... ...
2016-07-21 NaN NaN 99.430000 738.630005 160.449997 55.799999
2016-07-22 NaN NaN 98.660004 742.739990 162.070007 56.570000
2016-07-25 NaN NaN 97.339996 739.770020 162.649994 56.730000
2016-07-26 NaN NaN 96.669998 738.419983 162.119995 56.759998
2016-07-27 NaN NaN 102.949997 741.770020 161.830002 56.189999
2016-07-28 NaN NaN 104.339996 745.909973 161.369995 56.209999
2016-07-29 NaN NaN 104.209999 768.789978 160.619995 56.680000
2016-08-01 NaN NaN 106.050003 772.880005 161.449997 56.580002
2016-08-02 NaN NaN 104.480003 771.070007 160.580002 56.580002
2016-08-03 NaN NaN 105.790001 773.179993 160.669998 56.970001
2016-08-04 NaN NaN 105.870003 771.609985 161.550003 57.389999
2016-08-05 NaN NaN 107.480003 782.219971 163.500000 57.959999
2016-08-08 NaN NaN 108.370003 781.760010 162.039993 58.060001
2016-08-09 NaN NaN 108.809998 784.260010 161.770004 58.200001
2016-08-10 NaN NaN 108.000000 784.679993 162.080002 58.020000
2016-08-11 NaN NaN 107.930000 784.849976 163.529999 58.299999
2016-08-12 NaN NaN 108.180000 783.219971 161.949997 57.939999
2016-08-15 NaN NaN 109.480003 782.440002 161.880005 58.119999
2016-08-16 NaN NaN 109.379997 777.140015 160.699997 57.439999
2016-08-17 NaN NaN 109.220001 779.909973 160.440002 57.560001
2016-08-18 NaN NaN 109.080002 777.500000 161.360001 57.599998
2016-08-19 NaN NaN 109.360001 775.419983 160.039993 57.619999
2016-08-22 NaN NaN 108.510002 772.150024 160.000000 57.669998
2016-08-23 NaN NaN 108.849998 772.080017 160.259995 57.889999
2016-08-24 NaN NaN 108.029999 769.640015 159.050003 57.950001
2016-08-25 NaN NaN 107.570000 769.409973 158.630005 58.169998
2016-08-26 NaN NaN 106.940002 769.539978 158.320007 58.029999
2016-08-29 NaN NaN 106.820000 772.150024 159.720001 58.099998
2016-08-30 NaN NaN 106.000000 769.090027 159.399994 57.889999
2016-08-31 NaN NaN 106.099998 767.049988 158.880005 57.459999

168 rows × 6 columns


In [30]:
pd.concat([df1,df2],axis=0)


Out[30]:
AAPL GOOG IBM MSFT
Date
2016-01-04 105.349998 NaN 135.949997 NaN
2016-01-05 102.709999 NaN 135.850006 NaN
2016-01-06 100.699997 NaN 135.169998 NaN
2016-01-07 96.449997 NaN 132.860001 NaN
2016-01-08 96.959999 NaN 131.630005 NaN
2016-01-11 98.529999 NaN 133.229996 NaN
2016-01-12 99.959999 NaN 132.899994 NaN
2016-01-13 97.389999 NaN 131.169998 NaN
2016-01-14 99.519997 NaN 132.910004 NaN
2016-01-15 97.129997 NaN 130.029999 NaN
2016-01-19 96.660004 NaN 128.110001 NaN
2016-01-20 96.790001 NaN 121.860001 NaN
2016-01-21 96.300003 NaN 122.910004 NaN
2016-01-22 101.419998 NaN 122.500000 NaN
2016-01-25 99.440002 NaN 122.080002 NaN
2016-01-26 99.989998 NaN 122.589996 NaN
2016-01-27 93.419998 NaN 120.959999 NaN
2016-01-28 94.089996 NaN 122.220001 NaN
2016-01-29 97.339996 NaN 124.790001 NaN
2016-02-01 96.430000 NaN 124.830002 NaN
2016-02-02 94.480003 NaN 122.940002 NaN
2016-02-03 96.349998 NaN 124.720001 NaN
2016-02-04 96.599998 NaN 127.650002 NaN
2016-02-05 94.019997 NaN 128.570007 NaN
2016-02-08 95.010002 NaN 126.980003 NaN
2016-02-09 94.989998 NaN 124.070000 NaN
2016-02-10 94.269997 NaN 120.190002 NaN
2016-02-11 93.699997 NaN 117.849998 NaN
2016-02-12 93.989998 NaN 121.040001 NaN
2016-02-16 96.639999 NaN 122.739998 NaN
... ... ... ... ...
2016-11-17 NaN 771.229980 NaN 60.639999
2016-11-18 NaN 760.539978 NaN 60.349998
2016-11-21 NaN 769.200012 NaN 60.860001
2016-11-22 NaN 768.270020 NaN 61.119999
2016-11-23 NaN 760.989990 NaN 60.400002
2016-11-25 NaN 761.679993 NaN 60.529999
2016-11-28 NaN 768.239990 NaN 60.610001
2016-11-29 NaN 770.840027 NaN 61.090000
2016-11-30 NaN 758.039978 NaN 60.259998
2016-12-01 NaN 747.919983 NaN 59.200001
2016-12-02 NaN 750.500000 NaN 59.250000
2016-12-05 NaN 762.520020 NaN 60.220001
2016-12-06 NaN 759.109985 NaN 59.950001
2016-12-07 NaN 771.190002 NaN 61.369999
2016-12-08 NaN 776.419983 NaN 61.009998
2016-12-09 NaN 789.289978 NaN 61.970001
2016-12-12 NaN 789.270020 NaN 62.169998
2016-12-13 NaN 796.099976 NaN 62.980000
2016-12-14 NaN 797.070007 NaN 62.680000
2016-12-15 NaN 797.849976 NaN 62.580002
2016-12-16 NaN 790.799988 NaN 62.299999
2016-12-19 NaN 794.200012 NaN 63.619999
2016-12-20 NaN 796.419983 NaN 63.540001
2016-12-21 NaN 794.559998 NaN 63.540001
2016-12-22 NaN 791.260010 NaN 63.549999
2016-12-23 NaN 789.909973 NaN 63.240002
2016-12-27 NaN 791.549988 NaN 63.279999
2016-12-28 NaN 785.049988 NaN 62.990002
2016-12-29 NaN 782.789978 NaN 62.900002
2016-12-30 NaN 771.820007 NaN 62.139999

210 rows × 4 columns


In [31]:
pd.concat([df1,df2],axis=1)


Out[31]:
AAPL IBM GOOG MSFT
Date
2016-01-04 105.349998 135.949997 NaN NaN
2016-01-05 102.709999 135.850006 NaN NaN
2016-01-06 100.699997 135.169998 NaN NaN
2016-01-07 96.449997 132.860001 NaN NaN
2016-01-08 96.959999 131.630005 NaN NaN
2016-01-11 98.529999 133.229996 NaN NaN
2016-01-12 99.959999 132.899994 NaN NaN
2016-01-13 97.389999 131.169998 NaN NaN
2016-01-14 99.519997 132.910004 NaN NaN
2016-01-15 97.129997 130.029999 NaN NaN
2016-01-19 96.660004 128.110001 NaN NaN
2016-01-20 96.790001 121.860001 NaN NaN
2016-01-21 96.300003 122.910004 NaN NaN
2016-01-22 101.419998 122.500000 NaN NaN
2016-01-25 99.440002 122.080002 NaN NaN
2016-01-26 99.989998 122.589996 NaN NaN
2016-01-27 93.419998 120.959999 NaN NaN
2016-01-28 94.089996 122.220001 NaN NaN
2016-01-29 97.339996 124.790001 NaN NaN
2016-02-01 96.430000 124.830002 NaN NaN
2016-02-02 94.480003 122.940002 NaN NaN
2016-02-03 96.349998 124.720001 NaN NaN
2016-02-04 96.599998 127.650002 NaN NaN
2016-02-05 94.019997 128.570007 NaN NaN
2016-02-08 95.010002 126.980003 NaN NaN
2016-02-09 94.989998 124.070000 NaN NaN
2016-02-10 94.269997 120.190002 NaN NaN
2016-02-11 93.699997 117.849998 NaN NaN
2016-02-12 93.989998 121.040001 NaN NaN
2016-02-16 96.639999 122.739998 NaN NaN
... ... ... ... ...
2016-11-17 NaN NaN 771.229980 60.639999
2016-11-18 NaN NaN 760.539978 60.349998
2016-11-21 NaN NaN 769.200012 60.860001
2016-11-22 NaN NaN 768.270020 61.119999
2016-11-23 NaN NaN 760.989990 60.400002
2016-11-25 NaN NaN 761.679993 60.529999
2016-11-28 NaN NaN 768.239990 60.610001
2016-11-29 NaN NaN 770.840027 61.090000
2016-11-30 NaN NaN 758.039978 60.259998
2016-12-01 NaN NaN 747.919983 59.200001
2016-12-02 NaN NaN 750.500000 59.250000
2016-12-05 NaN NaN 762.520020 60.220001
2016-12-06 NaN NaN 759.109985 59.950001
2016-12-07 NaN NaN 771.190002 61.369999
2016-12-08 NaN NaN 776.419983 61.009998
2016-12-09 NaN NaN 789.289978 61.970001
2016-12-12 NaN NaN 789.270020 62.169998
2016-12-13 NaN NaN 796.099976 62.980000
2016-12-14 NaN NaN 797.070007 62.680000
2016-12-15 NaN NaN 797.849976 62.580002
2016-12-16 NaN NaN 790.799988 62.299999
2016-12-19 NaN NaN 794.200012 63.619999
2016-12-20 NaN NaN 796.419983 63.540001
2016-12-21 NaN NaN 794.559998 63.540001
2016-12-22 NaN NaN 791.260010 63.549999
2016-12-23 NaN NaN 789.909973 63.240002
2016-12-27 NaN NaN 791.549988 63.279999
2016-12-28 NaN NaN 785.049988 62.990002
2016-12-29 NaN NaN 782.789978 62.900002
2016-12-30 NaN NaN 771.820007 62.139999

210 rows × 4 columns


In [32]:
pd.concat([df1,df2,df3],axis=0)


Out[32]:
AAPL GOOG IBM MSFT
Date
2016-01-04 105.349998 NaN 135.949997 NaN
2016-01-05 102.709999 NaN 135.850006 NaN
2016-01-06 100.699997 NaN 135.169998 NaN
2016-01-07 96.449997 NaN 132.860001 NaN
2016-01-08 96.959999 NaN 131.630005 NaN
2016-01-11 98.529999 NaN 133.229996 NaN
2016-01-12 99.959999 NaN 132.899994 NaN
2016-01-13 97.389999 NaN 131.169998 NaN
2016-01-14 99.519997 NaN 132.910004 NaN
2016-01-15 97.129997 NaN 130.029999 NaN
2016-01-19 96.660004 NaN 128.110001 NaN
2016-01-20 96.790001 NaN 121.860001 NaN
2016-01-21 96.300003 NaN 122.910004 NaN
2016-01-22 101.419998 NaN 122.500000 NaN
2016-01-25 99.440002 NaN 122.080002 NaN
2016-01-26 99.989998 NaN 122.589996 NaN
2016-01-27 93.419998 NaN 120.959999 NaN
2016-01-28 94.089996 NaN 122.220001 NaN
2016-01-29 97.339996 NaN 124.790001 NaN
2016-02-01 96.430000 NaN 124.830002 NaN
2016-02-02 94.480003 NaN 122.940002 NaN
2016-02-03 96.349998 NaN 124.720001 NaN
2016-02-04 96.599998 NaN 127.650002 NaN
2016-02-05 94.019997 NaN 128.570007 NaN
2016-02-08 95.010002 NaN 126.980003 NaN
2016-02-09 94.989998 NaN 124.070000 NaN
2016-02-10 94.269997 NaN 120.190002 NaN
2016-02-11 93.699997 NaN 117.849998 NaN
2016-02-12 93.989998 NaN 121.040001 NaN
2016-02-16 96.639999 NaN 122.739998 NaN
... ... ... ... ...
2016-07-21 99.430000 738.630005 160.449997 55.799999
2016-07-22 98.660004 742.739990 162.070007 56.570000
2016-07-25 97.339996 739.770020 162.649994 56.730000
2016-07-26 96.669998 738.419983 162.119995 56.759998
2016-07-27 102.949997 741.770020 161.830002 56.189999
2016-07-28 104.339996 745.909973 161.369995 56.209999
2016-07-29 104.209999 768.789978 160.619995 56.680000
2016-08-01 106.050003 772.880005 161.449997 56.580002
2016-08-02 104.480003 771.070007 160.580002 56.580002
2016-08-03 105.790001 773.179993 160.669998 56.970001
2016-08-04 105.870003 771.609985 161.550003 57.389999
2016-08-05 107.480003 782.219971 163.500000 57.959999
2016-08-08 108.370003 781.760010 162.039993 58.060001
2016-08-09 108.809998 784.260010 161.770004 58.200001
2016-08-10 108.000000 784.679993 162.080002 58.020000
2016-08-11 107.930000 784.849976 163.529999 58.299999
2016-08-12 108.180000 783.219971 161.949997 57.939999
2016-08-15 109.480003 782.440002 161.880005 58.119999
2016-08-16 109.379997 777.140015 160.699997 57.439999
2016-08-17 109.220001 779.909973 160.440002 57.560001
2016-08-18 109.080002 777.500000 161.360001 57.599998
2016-08-19 109.360001 775.419983 160.039993 57.619999
2016-08-22 108.510002 772.150024 160.000000 57.669998
2016-08-23 108.849998 772.080017 160.259995 57.889999
2016-08-24 108.029999 769.640015 159.050003 57.950001
2016-08-25 107.570000 769.409973 158.630005 58.169998
2016-08-26 106.940002 769.539978 158.320007 58.029999
2016-08-29 106.820000 772.150024 159.720001 58.099998
2016-08-30 106.000000 769.090027 159.399994 57.889999
2016-08-31 106.099998 767.049988 158.880005 57.459999

296 rows × 4 columns


In [33]:
pd.concat([df1,df2,df3],axis=1)


Out[33]:
AAPL IBM GOOG MSFT AAPL GOOG IBM MSFT
Date
2016-01-04 105.349998 135.949997 NaN NaN NaN NaN NaN NaN
2016-01-05 102.709999 135.850006 NaN NaN NaN NaN NaN NaN
2016-01-06 100.699997 135.169998 NaN NaN NaN NaN NaN NaN
2016-01-07 96.449997 132.860001 NaN NaN NaN NaN NaN NaN
2016-01-08 96.959999 131.630005 NaN NaN NaN NaN NaN NaN
2016-01-11 98.529999 133.229996 NaN NaN NaN NaN NaN NaN
2016-01-12 99.959999 132.899994 NaN NaN NaN NaN NaN NaN
2016-01-13 97.389999 131.169998 NaN NaN NaN NaN NaN NaN
2016-01-14 99.519997 132.910004 NaN NaN NaN NaN NaN NaN
2016-01-15 97.129997 130.029999 NaN NaN NaN NaN NaN NaN
2016-01-19 96.660004 128.110001 NaN NaN NaN NaN NaN NaN
2016-01-20 96.790001 121.860001 NaN NaN NaN NaN NaN NaN
2016-01-21 96.300003 122.910004 NaN NaN NaN NaN NaN NaN
2016-01-22 101.419998 122.500000 NaN NaN NaN NaN NaN NaN
2016-01-25 99.440002 122.080002 NaN NaN NaN NaN NaN NaN
2016-01-26 99.989998 122.589996 NaN NaN NaN NaN NaN NaN
2016-01-27 93.419998 120.959999 NaN NaN NaN NaN NaN NaN
2016-01-28 94.089996 122.220001 NaN NaN NaN NaN NaN NaN
2016-01-29 97.339996 124.790001 NaN NaN NaN NaN NaN NaN
2016-02-01 96.430000 124.830002 NaN NaN NaN NaN NaN NaN
2016-02-02 94.480003 122.940002 NaN NaN NaN NaN NaN NaN
2016-02-03 96.349998 124.720001 NaN NaN NaN NaN NaN NaN
2016-02-04 96.599998 127.650002 NaN NaN NaN NaN NaN NaN
2016-02-05 94.019997 128.570007 NaN NaN NaN NaN NaN NaN
2016-02-08 95.010002 126.980003 NaN NaN NaN NaN NaN NaN
2016-02-09 94.989998 124.070000 NaN NaN NaN NaN NaN NaN
2016-02-10 94.269997 120.190002 NaN NaN NaN NaN NaN NaN
2016-02-11 93.699997 117.849998 NaN NaN NaN NaN NaN NaN
2016-02-12 93.989998 121.040001 NaN NaN NaN NaN NaN NaN
2016-02-16 96.639999 122.739998 NaN NaN NaN NaN NaN NaN
... ... ... ... ... ... ... ... ...
2016-11-17 NaN NaN 771.229980 60.639999 NaN NaN NaN NaN
2016-11-18 NaN NaN 760.539978 60.349998 NaN NaN NaN NaN
2016-11-21 NaN NaN 769.200012 60.860001 NaN NaN NaN NaN
2016-11-22 NaN NaN 768.270020 61.119999 NaN NaN NaN NaN
2016-11-23 NaN NaN 760.989990 60.400002 NaN NaN NaN NaN
2016-11-25 NaN NaN 761.679993 60.529999 NaN NaN NaN NaN
2016-11-28 NaN NaN 768.239990 60.610001 NaN NaN NaN NaN
2016-11-29 NaN NaN 770.840027 61.090000 NaN NaN NaN NaN
2016-11-30 NaN NaN 758.039978 60.259998 NaN NaN NaN NaN
2016-12-01 NaN NaN 747.919983 59.200001 NaN NaN NaN NaN
2016-12-02 NaN NaN 750.500000 59.250000 NaN NaN NaN NaN
2016-12-05 NaN NaN 762.520020 60.220001 NaN NaN NaN NaN
2016-12-06 NaN NaN 759.109985 59.950001 NaN NaN NaN NaN
2016-12-07 NaN NaN 771.190002 61.369999 NaN NaN NaN NaN
2016-12-08 NaN NaN 776.419983 61.009998 NaN NaN NaN NaN
2016-12-09 NaN NaN 789.289978 61.970001 NaN NaN NaN NaN
2016-12-12 NaN NaN 789.270020 62.169998 NaN NaN NaN NaN
2016-12-13 NaN NaN 796.099976 62.980000 NaN NaN NaN NaN
2016-12-14 NaN NaN 797.070007 62.680000 NaN NaN NaN NaN
2016-12-15 NaN NaN 797.849976 62.580002 NaN NaN NaN NaN
2016-12-16 NaN NaN 790.799988 62.299999 NaN NaN NaN NaN
2016-12-19 NaN NaN 794.200012 63.619999 NaN NaN NaN NaN
2016-12-20 NaN NaN 796.419983 63.540001 NaN NaN NaN NaN
2016-12-21 NaN NaN 794.559998 63.540001 NaN NaN NaN NaN
2016-12-22 NaN NaN 791.260010 63.549999 NaN NaN NaN NaN
2016-12-23 NaN NaN 789.909973 63.240002 NaN NaN NaN NaN
2016-12-27 NaN NaN 791.549988 63.279999 NaN NaN NaN NaN
2016-12-28 NaN NaN 785.049988 62.990002 NaN NaN NaN NaN
2016-12-29 NaN NaN 782.789978 62.900002 NaN NaN NaN NaN
2016-12-30 NaN NaN 771.820007 62.139999 NaN NaN NaN NaN

252 rows × 8 columns


In [34]:
pd.concat([df1,df3],axis=0,join='inner')


Out[34]:
AAPL IBM
Date
2016-01-04 105.349998 135.949997
2016-01-05 102.709999 135.850006
2016-01-06 100.699997 135.169998
2016-01-07 96.449997 132.860001
2016-01-08 96.959999 131.630005
2016-01-11 98.529999 133.229996
2016-01-12 99.959999 132.899994
2016-01-13 97.389999 131.169998
2016-01-14 99.519997 132.910004
2016-01-15 97.129997 130.029999
2016-01-19 96.660004 128.110001
2016-01-20 96.790001 121.860001
2016-01-21 96.300003 122.910004
2016-01-22 101.419998 122.500000
2016-01-25 99.440002 122.080002
2016-01-26 99.989998 122.589996
2016-01-27 93.419998 120.959999
2016-01-28 94.089996 122.220001
2016-01-29 97.339996 124.790001
2016-02-01 96.430000 124.830002
2016-02-02 94.480003 122.940002
2016-02-03 96.349998 124.720001
2016-02-04 96.599998 127.650002
2016-02-05 94.019997 128.570007
2016-02-08 95.010002 126.980003
2016-02-09 94.989998 124.070000
2016-02-10 94.269997 120.190002
2016-02-11 93.699997 117.849998
2016-02-12 93.989998 121.040001
2016-02-16 96.639999 122.739998
... ... ...
2016-07-21 99.430000 160.449997
2016-07-22 98.660004 162.070007
2016-07-25 97.339996 162.649994
2016-07-26 96.669998 162.119995
2016-07-27 102.949997 161.830002
2016-07-28 104.339996 161.369995
2016-07-29 104.209999 160.619995
2016-08-01 106.050003 161.449997
2016-08-02 104.480003 160.580002
2016-08-03 105.790001 160.669998
2016-08-04 105.870003 161.550003
2016-08-05 107.480003 163.500000
2016-08-08 108.370003 162.039993
2016-08-09 108.809998 161.770004
2016-08-10 108.000000 162.080002
2016-08-11 107.930000 163.529999
2016-08-12 108.180000 161.949997
2016-08-15 109.480003 161.880005
2016-08-16 109.379997 160.699997
2016-08-17 109.220001 160.440002
2016-08-18 109.080002 161.360001
2016-08-19 109.360001 160.039993
2016-08-22 108.510002 160.000000
2016-08-23 108.849998 160.259995
2016-08-24 108.029999 159.050003
2016-08-25 107.570000 158.630005
2016-08-26 106.940002 158.320007
2016-08-29 106.820000 159.720001
2016-08-30 106.000000 159.399994
2016-08-31 106.099998 158.880005

189 rows × 2 columns


In [35]:
pd.concat([df1,df3],axis=1,join='inner')


Out[35]:
AAPL IBM AAPL GOOG IBM MSFT
Date
2016-05-02 93.639999 145.270004 93.639999 698.210022 145.270004 50.610001
2016-05-03 95.180000 144.130005 95.180000 692.359985 144.130005 49.779999
2016-05-04 94.190002 144.250000 94.190002 695.700012 144.250000 49.869999
2016-05-05 93.239998 146.470001 93.239998 701.429993 146.470001 49.939999
2016-05-06 92.720001 147.289993 92.720001 711.119995 147.289993 50.389999
2016-05-09 92.790001 147.339996 92.790001 712.900024 147.339996 50.070000
2016-05-10 93.419998 149.970001 93.419998 723.179993 149.970001 51.020000
2016-05-11 92.510002 148.949997 92.510002 715.289978 148.949997 51.049999
2016-05-12 90.339996 148.839996 90.339996 713.309998 148.839996 51.509998
2016-05-13 90.519997 147.720001 90.519997 710.830017 147.720001 51.080002
2016-05-16 93.879997 149.460007 93.879997 716.489990 149.460007 51.830002
2016-05-17 93.489998 148.000000 93.489998 706.229980 148.000000 50.509998
2016-05-18 94.559998 147.339996 94.559998 706.630005 147.339996 50.810001
2016-05-19 94.199997 144.929993 94.199997 700.320007 144.929993 50.320000
2016-05-20 95.220001 147.250000 95.220001 709.739990 147.250000 50.619999
2016-05-23 96.430000 146.770004 96.430000 704.239990 146.770004 50.029999
2016-05-24 97.900002 148.309998 97.900002 720.090027 148.309998 51.590000
2016-05-25 99.620003 151.690002 99.620003 725.270020 151.690002 52.119999
2016-05-26 100.410004 152.440002 100.410004 724.119995 152.440002 51.889999
2016-05-27 100.349998 152.839996 100.349998 732.659973 152.839996 52.320000
2016-05-31 99.860001 153.740005 99.860001 735.719971 153.740005 53.000000

In [40]:



Out[40]:
GOOG
AAPL IBM
Date
2016-01-04 105.349998 135.949997
2016-01-05 102.709999 135.850006
2016-01-06 100.699997 135.169998
2016-01-07 96.449997 132.860001
2016-01-08 96.959999 131.630005
2016-01-11 98.529999 133.229996
2016-01-12 99.959999 132.899994
2016-01-13 97.389999 131.169998
2016-01-14 99.519997 132.910004
2016-01-15 97.129997 130.029999
2016-01-19 96.660004 128.110001
2016-01-20 96.790001 121.860001
2016-01-21 96.300003 122.910004
2016-01-22 101.419998 122.500000
2016-01-25 99.440002 122.080002
2016-01-26 99.989998 122.589996
2016-01-27 93.419998 120.959999
2016-01-28 94.089996 122.220001
2016-01-29 97.339996 124.790001
2016-02-01 96.430000 124.830002
2016-02-02 94.480003 122.940002
2016-02-03 96.349998 124.720001
2016-02-04 96.599998 127.650002
2016-02-05 94.019997 128.570007
2016-02-08 95.010002 126.980003
2016-02-09 94.989998 124.070000
2016-02-10 94.269997 120.190002
2016-02-11 93.699997 117.849998
2016-02-12 93.989998 121.040001
2016-02-16 96.639999 122.739998
... ... ...
2016-04-19 106.910004 144.000000
2016-04-20 107.129997 146.110001
2016-04-21 105.970001 149.300003
2016-04-22 105.680000 148.500000
2016-04-25 105.080002 148.809998
2016-04-26 104.349998 149.080002
2016-04-27 97.820000 150.470001
2016-04-28 94.830002 147.070007
2016-04-29 93.739998 145.940002
2016-05-02 93.639999 145.270004
2016-05-03 95.180000 144.130005
2016-05-04 94.190002 144.250000
2016-05-05 93.239998 146.470001
2016-05-06 92.720001 147.289993
2016-05-09 92.790001 147.339996
2016-05-10 93.419998 149.970001
2016-05-11 92.510002 148.949997
2016-05-12 90.339996 148.839996
2016-05-13 90.519997 147.720001
2016-05-16 93.879997 149.460007
2016-05-17 93.489998 148.000000
2016-05-18 94.559998 147.339996
2016-05-19 94.199997 144.929993
2016-05-20 95.220001 147.250000
2016-05-23 96.430000 146.770004
2016-05-24 97.900002 148.309998
2016-05-25 99.620003 151.690002
2016-05-26 100.410004 152.440002
2016-05-27 100.349998 152.839996
2016-05-31 99.860001 153.740005

103 rows × 2 columns


In [44]:
s4 = df2['GOOG']

In [45]:
s4


Out[45]:
Date
2016-08-01    772.880005
2016-08-02    771.070007
2016-08-03    773.179993
2016-08-04    771.609985
2016-08-05    782.219971
2016-08-08    781.760010
2016-08-09    784.260010
2016-08-10    784.679993
2016-08-11    784.849976
2016-08-12    783.219971
2016-08-15    782.440002
2016-08-16    777.140015
2016-08-17    779.909973
2016-08-18    777.500000
2016-08-19    775.419983
2016-08-22    772.150024
2016-08-23    772.080017
2016-08-24    769.640015
2016-08-25    769.409973
2016-08-26    769.539978
2016-08-29    772.150024
2016-08-30    769.090027
2016-08-31    767.049988
2016-09-01    768.780029
2016-09-02    771.460022
2016-09-06    780.080017
2016-09-07    780.349976
2016-09-08    775.320007
2016-09-09    759.659973
2016-09-12    769.020020
                 ...    
2016-11-17    771.229980
2016-11-18    760.539978
2016-11-21    769.200012
2016-11-22    768.270020
2016-11-23    760.989990
2016-11-25    761.679993
2016-11-28    768.239990
2016-11-29    770.840027
2016-11-30    758.039978
2016-12-01    747.919983
2016-12-02    750.500000
2016-12-05    762.520020
2016-12-06    759.109985
2016-12-07    771.190002
2016-12-08    776.419983
2016-12-09    789.289978
2016-12-12    789.270020
2016-12-13    796.099976
2016-12-14    797.070007
2016-12-15    797.849976
2016-12-16    790.799988
2016-12-19    794.200012
2016-12-20    796.419983
2016-12-21    794.559998
2016-12-22    791.260010
2016-12-23    789.909973
2016-12-27    791.549988
2016-12-28    785.049988
2016-12-29    782.789978
2016-12-30    771.820007
Name: GOOG, dtype: float64

In [46]:
type(s4)


Out[46]:
pandas.core.series.Series

データフレームとシリーズの結合


In [47]:
pd.concat([df1,s4],axis=0)


Out[47]:
AAPL IBM 0
Date
2016-01-04 105.349998 135.949997 NaN
2016-01-05 102.709999 135.850006 NaN
2016-01-06 100.699997 135.169998 NaN
2016-01-07 96.449997 132.860001 NaN
2016-01-08 96.959999 131.630005 NaN
2016-01-11 98.529999 133.229996 NaN
2016-01-12 99.959999 132.899994 NaN
2016-01-13 97.389999 131.169998 NaN
2016-01-14 99.519997 132.910004 NaN
2016-01-15 97.129997 130.029999 NaN
2016-01-19 96.660004 128.110001 NaN
2016-01-20 96.790001 121.860001 NaN
2016-01-21 96.300003 122.910004 NaN
2016-01-22 101.419998 122.500000 NaN
2016-01-25 99.440002 122.080002 NaN
2016-01-26 99.989998 122.589996 NaN
2016-01-27 93.419998 120.959999 NaN
2016-01-28 94.089996 122.220001 NaN
2016-01-29 97.339996 124.790001 NaN
2016-02-01 96.430000 124.830002 NaN
2016-02-02 94.480003 122.940002 NaN
2016-02-03 96.349998 124.720001 NaN
2016-02-04 96.599998 127.650002 NaN
2016-02-05 94.019997 128.570007 NaN
2016-02-08 95.010002 126.980003 NaN
2016-02-09 94.989998 124.070000 NaN
2016-02-10 94.269997 120.190002 NaN
2016-02-11 93.699997 117.849998 NaN
2016-02-12 93.989998 121.040001 NaN
2016-02-16 96.639999 122.739998 NaN
... ... ... ...
2016-11-17 NaN NaN 771.229980
2016-11-18 NaN NaN 760.539978
2016-11-21 NaN NaN 769.200012
2016-11-22 NaN NaN 768.270020
2016-11-23 NaN NaN 760.989990
2016-11-25 NaN NaN 761.679993
2016-11-28 NaN NaN 768.239990
2016-11-29 NaN NaN 770.840027
2016-11-30 NaN NaN 758.039978
2016-12-01 NaN NaN 747.919983
2016-12-02 NaN NaN 750.500000
2016-12-05 NaN NaN 762.520020
2016-12-06 NaN NaN 759.109985
2016-12-07 NaN NaN 771.190002
2016-12-08 NaN NaN 776.419983
2016-12-09 NaN NaN 789.289978
2016-12-12 NaN NaN 789.270020
2016-12-13 NaN NaN 796.099976
2016-12-14 NaN NaN 797.070007
2016-12-15 NaN NaN 797.849976
2016-12-16 NaN NaN 790.799988
2016-12-19 NaN NaN 794.200012
2016-12-20 NaN NaN 796.419983
2016-12-21 NaN NaN 794.559998
2016-12-22 NaN NaN 791.260010
2016-12-23 NaN NaN 789.909973
2016-12-27 NaN NaN 791.549988
2016-12-28 NaN NaN 785.049988
2016-12-29 NaN NaN 782.789978
2016-12-30 NaN NaN 771.820007

210 rows × 3 columns


In [48]:
pd.concat([df1,s4],axis=1)


Out[48]:
AAPL IBM GOOG
Date
2016-01-04 105.349998 135.949997 NaN
2016-01-05 102.709999 135.850006 NaN
2016-01-06 100.699997 135.169998 NaN
2016-01-07 96.449997 132.860001 NaN
2016-01-08 96.959999 131.630005 NaN
2016-01-11 98.529999 133.229996 NaN
2016-01-12 99.959999 132.899994 NaN
2016-01-13 97.389999 131.169998 NaN
2016-01-14 99.519997 132.910004 NaN
2016-01-15 97.129997 130.029999 NaN
2016-01-19 96.660004 128.110001 NaN
2016-01-20 96.790001 121.860001 NaN
2016-01-21 96.300003 122.910004 NaN
2016-01-22 101.419998 122.500000 NaN
2016-01-25 99.440002 122.080002 NaN
2016-01-26 99.989998 122.589996 NaN
2016-01-27 93.419998 120.959999 NaN
2016-01-28 94.089996 122.220001 NaN
2016-01-29 97.339996 124.790001 NaN
2016-02-01 96.430000 124.830002 NaN
2016-02-02 94.480003 122.940002 NaN
2016-02-03 96.349998 124.720001 NaN
2016-02-04 96.599998 127.650002 NaN
2016-02-05 94.019997 128.570007 NaN
2016-02-08 95.010002 126.980003 NaN
2016-02-09 94.989998 124.070000 NaN
2016-02-10 94.269997 120.190002 NaN
2016-02-11 93.699997 117.849998 NaN
2016-02-12 93.989998 121.040001 NaN
2016-02-16 96.639999 122.739998 NaN
... ... ... ...
2016-11-17 NaN NaN 771.229980
2016-11-18 NaN NaN 760.539978
2016-11-21 NaN NaN 769.200012
2016-11-22 NaN NaN 768.270020
2016-11-23 NaN NaN 760.989990
2016-11-25 NaN NaN 761.679993
2016-11-28 NaN NaN 768.239990
2016-11-29 NaN NaN 770.840027
2016-11-30 NaN NaN 758.039978
2016-12-01 NaN NaN 747.919983
2016-12-02 NaN NaN 750.500000
2016-12-05 NaN NaN 762.520020
2016-12-06 NaN NaN 759.109985
2016-12-07 NaN NaN 771.190002
2016-12-08 NaN NaN 776.419983
2016-12-09 NaN NaN 789.289978
2016-12-12 NaN NaN 789.270020
2016-12-13 NaN NaN 796.099976
2016-12-14 NaN NaN 797.070007
2016-12-15 NaN NaN 797.849976
2016-12-16 NaN NaN 790.799988
2016-12-19 NaN NaN 794.200012
2016-12-20 NaN NaN 796.419983
2016-12-21 NaN NaN 794.559998
2016-12-22 NaN NaN 791.260010
2016-12-23 NaN NaN 789.909973
2016-12-27 NaN NaN 791.549988
2016-12-28 NaN NaN 785.049988
2016-12-29 NaN NaN 782.789978
2016-12-30 NaN NaN 771.820007

210 rows × 3 columns


In [ ]: