Pandas 的轴向连接 concat

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Pandas 的轴向连接 concat相关的知识,希望对你有一定的参考价值。

 

在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将值和索引粘合在一起:

 

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

求交集

 

 

指定索引名称:join_axes

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

如果使用unstack()方法呢

concat axis=1方向

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

DataFrame的对象也是一样:

 

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

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                                                                                                                          
代码

 

concat函数的参数

 

以上是关于Pandas 的轴向连接 concat的主要内容,如果未能解决你的问题,请参考以下文章

Python数据分析笔记#8.2.3 轴向连接

pandas 笔记:合并操作

使用pandas进行数据预处理01

Pandas 中的 Concat 2 列 - AttributeError:“DataFrame”对象没有属性“concat”

pandas学习(创建多层索引数据重塑与轴向旋转)

pandas的连接函数concat()函数