pandas.concat#
- pandas.concat(objs, axis=0, join='outer', ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, sort=False, copy=True)[源代码]#
使用沿其他轴的可选设置逻辑沿特定轴连接Pandas对象。
还可以在串联轴上添加层次索引层,如果标签在传递的轴编号上相同(或重叠),这可能会很有用。
- 参数
- objs序列或DataFrame对象的序列或映射
如果传递映射,则排序的键将用作 keys 参数,除非它被传递,在这种情况下,这些值将被选择(见下文)。任何None对象都将静默丢弃,除非它们都为None,在这种情况下将引发ValueError。
- axis{0/‘index’,1/‘Columns’},默认0
要连接的轴。
- join{‘内部’,‘外部’},默认为‘外部’
如何处理其他轴上的索引。
- ignore_index布尔值,默认为False
如果为True,则不使用沿串联轴的索引值。生成的轴将被标记为0,...,n-1。如果要串联的对象的串联轴没有有意义的索引信息,这将非常有用。请注意,连接中仍考虑其他轴上的索引值。
- keys序列,默认为无
如果通过了多个级别,则应包含元组。使用传递的键作为最外层构建分层索引。
- levels序列列表,默认为无
用于构造多索引的特定级别(唯一值)。否则,将从密钥中推断出它们。
- names列表,默认为无
生成的分层索引中的级别的名称。
- verify_integrity布尔值,默认为False
检查新的串联轴是否包含重复项。与实际的数据串联相比,这可能非常昂贵。
- sort布尔值,默认为False
时,如果未对齐非串联轴,则对其进行排序 join 是“外部的”。这在以下情况下不起作用
join='inner'
,它已经保留了非级联轴的顺序。在 1.0.0 版更改: 默认情况下更改为不排序。
- copy布尔值,默认为True
如果为False,则不要不必要地复制数据。
- 退货
- 对象,对象的类型
在串联所有
Series
沿着索引(轴=0),一个Series
被归还了。什么时候objs
包含至少一个DataFrame
,aDataFrame
被归还了。沿列(轴=1)串联时,DataFrame
返回。
参见
DataFrame.join
使用索引联接DataFrame。
DataFrame.merge
按索引或列合并DataFrame。
注意事项
键、级别和名称参数都是可选的。
可以找到此方法如何与其他组合Pandas对象的工具配合使用的演练 here 。
示例
将两个组合
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']