from pandas import DataFrame,Series
import pandas as pd
import numpy as np
arr = np.arange(12).reshape((3,4))
print(arr)
'''
[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]
'''
print(np.concatenate([arr,arr],axis=1))
'''
[[ 0 1 2 3 0 1 2 3]
[ 4 5 6 7 4 5 6 7]
[ 8 9 10 11 8 9 10 11]]
'''
s1 = Series([0,1],index=['a','b'])
s2 = Series([2,3,4],index=['c','d','e'])
s3 = Series([5,6],index=['f','g'])
print(s1)
'''
a 0
b 1
dtype: int64
'''
print(s2)
'''
c 2
d 3
e 4
dtype: int64
'''
print(s3)
'''
f 5
g 6
dtype: int64
'''
print(pd.concat([s1,s2,s3]))
'''
a 0
b 1
c 2
d 3
e 4
f 5
g 6
dtype: int64
'''
# concat是在axis=0上工作的,产生一个新的series,如果传入axis=1,结果会变成dataframe(axis=1是列)
print(pd.concat([s1,s2,s3],axis=1,sort=True))
'''
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
'''
s4 = Series([0,1],index=['a','b'])
s5 = Series([2,3,4],index=['a','b','c'])
print(pd.concat([s4,s5])) # 轴向链接
'''
a 0
b 1
a 2
b 3
c 4
dtype: int64
'''
print(pd.concat([s4,s5],axis=1,sort=True)) # 外连接,并集
'''
0 1
a 0.0 2
b 1.0 3
c NaN 4
'''
print(pd.concat([s4,s5],axis=1,join='inner')) # 内连接,交集
'''
0 1
a 0 2
b 1 3
'''
print(pd.concat([s4,s5],axis=1,join_axes=[['a','b','c','d']])) # 使用join_axes指定索引
'''
0 1
a 0.0 2.0
b 1.0 3.0
c NaN 4.0
d NaN NaN
'''
print(pd.concat([s1,s2,s3],keys=['A','B','C'])) # 连接的片段在结果可使用keys区分
'''
A a 0
b 1
B c 2
d 3
e 4
C f 5
g 6
dtype: int64
'''
# 如果axis=1,keys就会变成dataframe的列头
print(pd.concat([s1,s2,s3],keys=['A','B','C'],axis=1,sort=True))
'''
A B C
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
'''
df1 = DataFrame(np.arange(6).reshape((3,2)),index=['a','b','c'],columns=['one','two'])
df2 = DataFrame(np.arange(4).reshape((2,2)),index=['a','c'],columns=['three','four'])
print(df1)
'''
one two
a 0 1
b 2 3
c 4 5
'''
print(df2)
'''
three four
a 0 1
c 2 3
'''
print(pd.concat([df1,df2],sort=True))
'''
four one three two
a NaN 0.0 NaN 1.0
b NaN 2.0 NaN 3.0
c NaN 4.0 NaN 5.0
a 1.0 NaN 0.0 NaN
c 3.0 NaN 2.0 NaN
'''
print(pd.concat([df1,df2],axis=1,sort=True))
'''
one two three four
a 0 1 0.0 1.0
b 2 3 NaN NaN
c 4 5 2.0 3.0
'''
print(pd.concat([df1,df2],axis=1,keys=['level1','level2'],names=['upper','lower'],sort=True))
'''
upper level1 level2
lower one two three four
a 0 1 0.0 1.0
b 2 3 NaN NaN
c 4 5 2.0 3.0
'''