Pandas 的轴向连接 concat

时间:2021-09-27 15:46:39

 

在pandas里面,另一种数据何必运算也被称为连接(concatenation)、绑定(binding)或堆叠(stacking)。

Numpy的轴向连接, concatenation

Numpy有一个用于合并原始Numpy数组的concatenation函数:

In [4]: arr = np.arange(12).reshape((3, 4))

In [
5]: arr
Out[
5]:
array([[ 0,
1, 2, 3],
[
4, 5, 6, 7],
[
8, 9, 10, 11]])
In [
7]: np.concatenate([arr, arr], axis=1)
Out[
7]:
array([[ 0,
1, 2, 3, 0, 1, 2, 3],
[
4, 5, 6, 7, 4, 5, 6, 7],
[
8, 9, 10, 11, 8, 9, 10, 11]])

 

pandas --Series--concat函数

需要考虑的问题:

  1. 如果各对象其他轴上的索引不同, 那些轴应该是做并集还是交集?

  2. 结果对象中的分组需要各不相同吗?

  3. 用于连接的轴重要吗?

用concat将值和索引粘合在一起:

Pandas 的轴向连接 concat

 

默认情况下, concat是在axis=0上工作。如果传入传入axis=1, 则结果就会变成一个DataFrame

Pandas 的轴向连接 concat

求交集

 Pandas 的轴向连接 concat

 

指定索引名称:join_axes

Pandas 的轴向连接 concat

如果参与连接的片段中区分不开。假设你想要在连接轴上创建一个层次化索引。使用keys参数即可达到这个目的:

Pandas 的轴向连接 concat

如果使用unstack()方法呢

Pandas 的轴向连接 concat

concat axis=1方向

 如果沿着axis=1对Series进行合并, 则keys就会成为DataFrame的列头:

Pandas 的轴向连接 concat

DataFrame的对象也是一样:

Pandas 的轴向连接 concat

 

 最后考虑一个问题,行索引, 也就是index

Pandas 的轴向连接 concatPandas 的轴向连接 concat
In [2]: from pandas import Series, DataFrame                                                                                                                                                                                                    In [3]: import pandas as pd                                                                                                                                                                                                                     In [4]: import numpy as np                                                                                                                                                                                                                      In [5]: df1 = DataFrame(np.random.randn(3, 4), columns=[i for i in "abcd"])                                                                                                                                                                     In [6]: df2 = DataFrame(np.random.randn(2, 3), columns=[i for i in "bda"])                                                                                                                                                                      In [7]: df1                                                                                                             Out[7]:                                                                                                                           a         b         c         d                                                                               0 -1.688676  0.839406 -0.196775  0.864225                                                                               1 -0.145041  1.273715  0.532980  0.648970                                                                               2  0.021084 -1.824193  0.177116 -1.137237                                                                                                                                                                                                       In [8]: df2                                                                                                             Out[8]:                                                                                                                           b         d         a                                                                                         0 -0.418477  0.486801  0.700591                                                                                         1 -1.543646  0.506380  1.407013                                                                                                                          
代码

Pandas 的轴向连接 concat

 

concat函数的参数

Pandas 的轴向连接 concat