"""
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函数做连接的,实际上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']])
"""
参与连接的片段在结果中区分不开。假设你想要在连接轴上创建一个层次化索引,使用keys参数即可达到这个目的
"""
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'])
# 也可以用字典在连接数据的时候直接加入列名
pd.concat({'level1': df1, 'level2': df2}, axis=1)
"""








网友评论