沿特定轴将 pandas 对象与其他轴上的可选设置逻辑连接起来。

也可以在串联轴上添加一层分层索引,如果标签在传递的轴号上相同(或重叠),则可能很有用。

参数:

objs:a sequence 或 mapping of Series 或 DataFrame objects如果通过了dict,则排序后的键将用作keys参数,除非传递该参数,否则将选择值(请参见下文)。除非它们都为None,否则所有None对象都将被静默删除,在这种情况下将引发ValueError。

axis:{0/’index’, 1/’columns’}, 默认为 0连接的轴。
join:{‘inner’, ‘outer’}, 默认为 ‘outer’如何处理其他轴上的索引。
ignore_index:bool, 默认为 False如果为True,则不要沿串联轴使用索引值。结果轴将标记为0,…,n-1。如果要串联对象时,串联轴没有有意义的索引信息,这将很有用。请注意,联接中仍会考虑其他轴上的索引值。
keys:sequence, 默认为 None如果通过了多个级别,则应包含元组。使用传递的键作为最外层级别来构造层次结构索引。
levels:list of sequences, 默认为 None用于构造MultiIndex的特定级别(唯一值)。否则,将从按键推断出它们。
names:list, 默认为 None生成的层次结构索引中的级别的名称。
verify_integrity:bool, 默认为 False检查新的串联轴是否包含重复项。相对于实际数据串联而言,这可能非常昂贵。
sort:bool, 默认为 False排序非串联轴(如果尚未对齐时)join是‘outer’。这在以下情况下无效join='inner',它已经保留了非串联轴的顺序。

0.23.0版中的新功能。

在1.0.0版中进行了更改:更改为默认情况下不排序。

copy:bool, 默认为 True如果为False,则不要不必要地复制数据。

返回值:

对象,objs类型连接所有时Series沿索引(轴= 0),aSeries返回。当objs包含至少一个DataFrame, 一种DataFrame返回。沿列连接时(轴= 1),aDataFrame返回。

注意:

键,级别和名称参数都是可选的。

可以找到此方法如何与其他用于组合 pandas 对象的工具配合使用的演练这里。

例子:

结合两个Series。

>>> s1 = pd.Series(['a', 'b'])
>>> s2 = pd.Series(['c', 'd'])
>>> pd.concat([s1, s2])
0 a
1 b
0 c
1 d
dtype:object

清除现有索引并通过设置ignore_index选择True。

>>> pd.concat([s1, s2], ignore_index=True)
0 a
1 b
2 c
3 d
dtype:object

在数据的最外层添加层次结构索引,keys选项。

>>> pd.concat([s1, s2], keys=['s1', 's2'])
s1 0 a
1 b
s2 0 c
1 d
dtype:object

用标记您创建的索引键names选项。

>>> pd.concat([s1, s2], keys=['s1', 's2'],
... names=['Series name', 'Row ID'])
Series name Row ID
s1 0 a
1 b
s2 0 c
1 d
dtype:object
结合两个DataFrame具有相同列的对象。
>>> df1 = pd.DataFrame([['a', 1], ['b', 2]],
... columns=['letter', 'number'])
>>> df1
letter number
0 a 1
1 b 2
>>> df2 = pd.DataFrame([['c', 3], ['d', 4]],
... columns=['letter', 'number'])
>>> df2
letter number
0 c 3
1 d 4
>>> pd.concat([df1, df2])
letter number
0 a 1
1 b 2
0 c 3
1 d 4
结合DataFrame列重叠的对象,并返回所有内容。相交外部的列将填充为NaN值。
>>> df3 = pd.DataFrame([['c', 3, 'cat'], ['d', 4, 'dog']],
... columns=['letter', 'number', 'animal'])
>>> df3
letter number animal
0 c 3 cat
1 d 4 dog
>>> pd.concat([df1, df3], sort=False)
letter number animal
0 a 1 NaN
1 b 2 NaN
0 c 3 cat
1 d 4 dog
结合DataFrame具有重叠列的对象,并仅返回通过传递而共享的对象inner到join关键字参数。
>>> pd.concat([df1, df3], join="inner")
letter number
0 a 1
1 b 2
0 c 3
1 d 4
结合DataFrame通过传入沿x轴水平的对象axis=1。
>>> df4 = pd.DataFrame([['bird', 'polly'], ['monkey', 'george']],
... columns=['animal', 'name'])
>>> pd.concat([df1, df4], axis=1)
letter number animal name
0 a 1 bird polly
1 b 2 monkey george
防止结果包含重复的索引值verify_integrity选项。
>>> df5 = pd.DataFrame([1], index=['a'])
>>> df5
0
a 1
>>> df6 = pd.DataFrame([2], index=['a'])
>>> df6
0
a 2
>>> pd.concat([df5, df6], verify_integrity=True)
Traceback (most recent call last):
...
ValueError:Indexes have overlapping values:['a']