Spec-Zone.ru › pandas 2

pandas.concat

pandas.concat(objs, *, axis=0, join='outer', ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, sort=False, copy=None)[source]

Объединение объектов pandas по определённой оси.

Позволяет выполнять необязательную логику множеств по другим осям.

Также может добавлять уровень иерархической индексации по оси объединения, что может быть полезно, если метки совпадают (или перекрываются) на указанном номере оси.

Параметры:
objs:последовательность или отображение объектов Series или DataFrame

Если передано отображение, отсортированные ключи будут использованы в качестве аргумента keys, если он не передан, в этом случае будут выбраны значения (см. ниже). Любые объекты None будут удалены без предупреждений, если все они равны None, то будет вызвано исключение ValueError.

axis:{0/’index’, 1/’columns’}, по умолчанию 0

Ось, по которой нужно объединить.

join:{‘inner’, ‘outer’}, по умолчанию ‘outer’

Как обработать индексы на других осях (или осях).

ignore_index:bool, по умолчанию False

Если True, значения индекса по оси объединения не используются. Результирующая ось будет иметь метки 0, ..., n - 1. Это полезно, если вы объединяете объекты, где ось объединения не имеет осмысленной информации об индексации. Обратите внимание, что значения индексов на других осях по-прежнему учитываются в объединении.

keys:последовательность, по умолчанию None

Если передано несколько уровней, должна содержать кортежи. Создать иерархический индекс с использованием переданных ключей как самого внешнего уровня.

levels:список последовательностей, по умолчанию None

Конкретные уровни (уникальные значения) для построения MultiIndex. В противном случае они будут выведены из ключей.

names:список, по умолчанию None

Имена уровней в результирующем иерархическом индексе.

verify_integrity:bool, по умолчанию False

Проверить, содержит ли новая ось объединения дубликаты. Это может быть очень затратно по сравнению с фактическим объединением данных.

sort:bool, по умолчанию False

Отсортировать ось, не участвующую в объединении, если она ещё не выровнена. Исключением является случай, когда ось, не участвующая в объединении, является DatetimeIndex и join=’outer’, и ось не выровнена. В этом случае ось, не участвующая в объединении, всегда сортируется лексикографически.

copy:bool, по умолчанию True

Если False, не копировать данные излишне.

Возвращаемое значение:
объект, тип objs

При объединении всех Series по индексу (axis=0) возвращается Series. Когда objs содержит хотя бы один DataFrame, возвращается DataFrame. При объединении по столбцам (axis=1) возвращается DataFrame.

См. также

DataFrame.join

Объединить DataFrame с использованием индексов.

DataFrame.merge

Объединить DataFrame по индексам или столбцам.

Примечания

Аргументы keys, levels и names являются необязательными.

Подробное описание того, как этот метод сочетается с другими инструментами для объединения объектов pandas, можно найти здесь.

Не рекомендуется создавать DataFrame, добавляя по одному строке в цикле for. Создайте список строк и создайте DataFrame в одном объединении.

Примеры

Объединить два 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']

Добавить одну строку в конец DataFrame объекта.

>>> df7 = pd.DataFrame({'a': 1, 'b': 2}, index=[0])
>>> df7
    a   b
0   1   2
>>> new_row = pd.Series({'a': 3, 'b': 4})
>>> new_row
a    3
b    4
dtype: int64
>>> pd.concat([df7, new_row.to_frame().T], ignore_index=True)
    a   b
0   1   2
1   3   4

© 2008–2022, AQR Capital Management, LLC, Lambda Foundry, Inc. and PyData Development Team
Licensed under the 3-clause BSD License.
https://pandas.pydata.org/pandas-docs/version/2.2.2/reference/api/pandas.concat.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API