pandas.concat#

pandas.concat(объекты, *, ось=0, join='outer', ignore_index=False, ключи=None, уровни=None, names=None, verify_integrity=False, sort=False, copy=None)[источник]#

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

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

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

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

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

ось{0/'index', 1/'columns'}, по умолчанию 0

Ось для конкатенации.

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

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

ignore_indexbool, по умолчанию False

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

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

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

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

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

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

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

verify_integritybool, по умолчанию False

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

sortbool, по умолчанию False

Сортировать ось неконкатенации, если она ещё не выровнена. Одно исключение: когда ось неконкатенации — DatetimeIndex и join='outer', и ось ещё не выровнена. В этом случае ось неконкатенации всегда сортируется лексикографически.

copybool, по умолчанию True

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

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

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

Смотрите также

DataFrame.join

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

DataFrame.merge

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

Примечания

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

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

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

Примеры

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