当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python 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 对象,并沿其他轴使用可选的设置逻辑。

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

参数

objsSeries 或 DataFrame 对象的序列或映射

如果传递了映射,则排序的键将用作keys 参数,除非传递,在这种情况下将选择值(见下文)。任何 None 对象都将被静默删除,除非它们都是 None 在这种情况下将引发 ValueError 。

axis{0/'index', 1/'columns'},默认 0

要连接的轴。

join{‘inner’, ‘outer’},默认 ‘outer’

如何处理其他轴(或轴)上的索引。

ignore_index布尔值,默认为 False

如果为 True,则不要沿连接轴使用索引值。结果轴将标记为 0, ..., n - 1。如果您要连接对象,而连接轴没有有意义的索引信息,这将非常有用。请注意,连接中仍然尊重其他轴上的索引值。

keys序列,默认无

如果通过了多个级别,则应包含元组。使用传递的键作为最外层构建层次索引。

levels序列列表,默认无

用于构造 MultiIndex 的特定级别(唯一值)。否则,它们将从 key 中推断出来。

names列表,默认无

生成的分层索引中的级别名称。

verify_integrity布尔值,默认为 False

检查新的连接轴是否包含重复项。相对于实际的数据连接,这可能非常昂贵。

sort布尔值,默认为 False

如果 join 为 ‘outer’ 时未对齐,则对非串联轴进行排序。这在 join='inner' 时无效,它已经保留了非串联轴的顺序。

copy布尔值,默认为真

如果为 False,则不要不必要地复制数据。

返回

对象,对象类型

当沿索引 (axis=0) 连接所有 Series 时,将返回 Series。当 objs 至少包含一个 DataFrame 时,返回一个 DataFrame。沿列连接时 (axis=1),返回 DataFrame

注意

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

可以在此处找到有关此方法如何与其他组合 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

通过传入 axis=1 沿 x 轴水平组合 DataFrame 对象。

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

相关用法


注:本文由纯净天空筛选整理自pandas.pydata.org大神的英文原创作品 pandas.concat。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。