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も使えます。
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
横方向に結合し、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 [ ]: