Pandas 拼接(concat)

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))

输出结果如下:
Pandas 拼接(concat)

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))

输出结果如下:
Pandas 拼接(concat)

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'))

输出结果如下:
Pandas 拼接(concat)

等级索引

假如我们想用于拼接的轴上创建等级索引,可以借助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]))

输出结果如下:
Pandas 拼接(concat)

按照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]))

输出结果如下:
Pandas 拼接(concat)

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]))

输出结果如下:
Pandas 拼接(concat)

指定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))

输出结果如下:
Pandas 拼接(concat)

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程