Pandas 拼接(concat),前面介绍了Pandas合并,Pandas另一种数据整合操作叫做拼接(concatenation),Pandas的convat()函数实现了索引拼接的功能。
阅读本章内容前,可以先学习Pandas基础教程及Pandas数据读写。
concatenate() 函数
Numpy的 concatenate()函数就是用于数组的拼接操作。如下所示:
import numpy as np array1 = np.array([[0,1,2],[3,4,5],[6,7,8]]) array2 = array1 + 6 print(array2) print("------------") print(np.concatenate([array1, array2],axis=0)) print("------------") print(np.concatenate([array1, array2],axis=1))
输出结果如下:
concat() 函数
Pandas库以及它的Series和DataFrame等数据结构实现了带编号的索引,Pandas的concat()函数实现了按索引拼接的功能。如下所示:
import pandas as pd import numpy as np ser1 = pd.Series(np.random.rand(4), index=[1,2,3,4]) ser2 = pd.Series(np.random.rand(4), index=[5,6,7,8]) print(ser1) print('------------') print(ser2) print('------------') print(pd.concat([ser1, ser2]))
输出结果如下所示:
1 0.459076 2 0.102168 3 0.779139 4 0.691197 dtype: float64 ------------ 5 0.164705 6 0.948454 7 0.839946 8 0.835565 dtype: float64 ------------ 1 0.459076 2 0.102168 3 0.779139 4 0.691197 5 0.164705 6 0.948454 7 0.839946 8 0.835565 dtype: float64
concat()函数默认按照axis=0这条轴进行拼接数据,并返回Series对象。如果指定axis=1,返回结果将是DataFrame对象,如下所示:
import pandas as pd import numpy as np ser1 = pd.Series(np.random.rand(4), index=[1,2,3,4]) ser2 = pd.Series(np.random.rand(4), index=[5,6,7,8]) print(pd.concat([ser1, ser2], axis=1))
输出结果如下:
concat()函数默认为外连接操作,把join选项设置为inner,可以执行内连接操作,如下所示:
import pandas as pd import numpy as np ser1 = pd.Series(np.random.rand(4), index=[1,2,3,4]) ser2 = pd.Series(np.random.rand(4), index=[5,6,7,8]) df = pd.concat([ser1, ser2], axis=1) print(df) print('--------') print(pd.concat([ser1, df], axis=1, join='inner'))
输出结果如下:
等级索引
假如我们想用于拼接的轴上创建等级索引,可以借助keys选项来完成,如下所示:
import pandas as pd import numpy as np ser1 = pd.Series(np.random.rand(4), index=[1,2,3,4]) ser2 = pd.Series(np.random.rand(4), index=[5,6,7,8]) print(pd.concat([ser1, ser2], keys=[1,2]))
输出结果如下:
按照axis拼接Series对象,指定的键变成拼接后得到的DataFrame对象列的名称,如下所示:
import pandas as pd import numpy as np ser1 = pd.Series(np.random.rand(4), index=[1,2,3,4]) ser2 = pd.Series(np.random.rand(4), index=[5,6,7,8]) print(pd.concat([ser1, ser2], axis=1,keys=[1,2]))
输出结果如下:
DataFrame 对象的拼接
前面介绍的是Series对象的拼接,DataFrame 对象的拼接方法与之相同,如下所示:
import pandas as pd import numpy as np frame1 = pd.DataFrame(np.random.rand(9).reshape(3,3), index=[1,2,3],columns=['A','B','C']) frame2 = pd.DataFrame(np.random.rand(9).reshape(3,3), index=[4,5,6],columns=['A','B','C']) print(pd.concat([frame1,frame2]))
输出结果如下:
指定axis=1拼接数据,如下所示:
import pandas as pd import numpy as np frame1 = pd.DataFrame(np.random.rand(9).reshape(3,3), index=[1,2,3],columns=['A','B','C']) frame2 = pd.DataFrame(np.random.rand(9).reshape(3,3), index=[4,5,6],columns=['A','B','C']) print(pd.concat([frame1,frame2], axis=1))
输出结果如下:
版权声明:本页面内容旨在传播知识,为用户自行发布,若有侵权等问题请及时与本网联系,我们将第一时间处理。E-mail:284563525@qq.com