"""
import pandas as pd
import numpy as np
arr = np.arange(12).reshape((3,4))
# print(arr)
double_arr = np.concatenate([arr, arr], axis=1)
# print(double_arr)
# 可見雏逾,numpy是可以用concatenate函數(shù)做連接的,實際上pandas也可以
"""
Series
"""
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'])
"""
默認情況下看成,concat是在axis=0上工作的雏节,最終產生一個新的Series铅匹。如果傳入 axis=1族铆,則結果就會變成一個DataFrame(axis=1是列)
"""
concat_value = pd.concat([s1,s2,s3],axis =1)
# print(concat_value)
s4 = pd.concat([s1,s3],axis =0)
"""
這種情況下汉规,另外的軸上沒有重疊,從索引的有序并集(外連接)上就可以看出 來,傳入join='inner'即可得到它們的交集
"""
s5 = pd.concat([s1,s4],axis =1,join ='inner')
# print(s5)
"""
你可以通過join_axes指定要在其它軸上使用的索引
"""
s6 = pd.concat([s1, s4], axis=1, join_axes=[['a', 'c', 'b', 'e']])
"""
參與連接的片段在結果中區(qū)分不開才菠。假設你想要在連接軸上創(chuàng)建一個層次化索引,使用keys參數(shù)即可達到這個目的
"""
result = pd.concat([s1, s1, s3], keys=['one','two', 'three'])
# print(result)
# 雙層索引茸时,用unstack()可以讓目前的外層索引成為行索引,第二層索引是列索引
# print(result.unstack())
"""
如果沿著axis=1對Series進行合并赋访,則keys就會成為DataFrame的列頭
"""
result_ = pd.concat([s1, s2, s3], axis=1, keys=['one','two', 'three'])
# print(result_)
df1 = pd.DataFrame(np.arange(6).reshape(3, 2), index=['a', 'b', 'c'],columns=['one', 'two'])
df2 = pd.DataFrame(np.arange(4).reshape(2, 2), index=['a', 'c'],columns=['three', 'four'])
df3 = pd.concat([df1,df2],axis =0,keys = ['one','two'])
df4 = pd.concat([df1,df2],axis =1,keys = ['level1','level2'])
# 也可以用字典在連接數(shù)據(jù)的時候直接加入列名
pd.concat({'level1': df1, 'level2': df2}, axis=1)
"""