Поиск по сайту:

Pandas concat() Примеры


Метод Pandas concat() используется для объединения объектов pandas, таких как DataFrames и Series. Мы можем передавать различные параметры, чтобы изменить поведение операции конкатенации.

1. Синтаксис Pandas concat()

Синтаксис метода concat():

concat(objs, axis=0, join='outer', join_axes=None, ignore_index=False,
           keys=None, levels=None, names=None, verify_integrity=False,
           sort=None, copy=True)

  • objs: последовательность объектов pandas для объединения.
  • join: необязательный параметр, определяющий, как обрабатывать индексы на другой оси. Допустимые значения: «внутренний» и «внешний».
  • join_axes: устарело в версии 0.25.0.
  • ignore_index: если установлено значение True, индексы из исходных объектов будут игнорироваться, а результату будет присвоена последовательность индексов от 0,1,2 до n.
  • ключи: последовательность для добавления идентификатора к результирующим индексам. Это полезно для маркировки исходных объектов в выходных данных.
  • levels: последовательность для указания уникальных уровней для создания мультииндекса.
  • имена: имена уровней в результирующем иерархическом индексе.
  • verify_integrity: проверьте, содержит ли новая объединенная ось дубликаты. Это дорогая операция.
  • sort: сортировка оси без конкатенации, если она еще не выровнена, когда соединение является «внешним». Добавлено в версии 0.23.0
  • copy: при значении False не копировать данные без необходимости.

Рекомендуемое чтение: учебник по Python Pandas

2. Пример Pandas concat()

Давайте рассмотрим простой пример объединения двух объектов DataFrame.

import pandas

d1 = {"Name": ["Pankaj", "Lisa"], "ID": [1, 2]}
d2 = {"Name": "David", "ID": 3}

df1 = pandas.DataFrame(d1, index={1, 2})
df2 = pandas.DataFrame(d2, index={3})

print('********\n', df1)
print('********\n', df2)

df3 = pandas.concat([df1, df2])

print('********\n', df3)

Выход:

********
      Name  ID
1  Pankaj   1
2    Lisa   2
********
     Name  ID
3  David   3
********
      Name  ID
1  Pankaj   1
2    Lisa   2
3   David   3

Обратите внимание, что конкатенация выполняется построчно, т.е. по оси 0. Кроме того, в выходных данных сохраняются индексы из исходных объектов DataFrame.

3. Объединение вдоль столбца, т.е. по 1 оси

d1 = {"Name": ["Pankaj", "Lisa"], "ID": [1, 2]}
d2 = {"Role": ["Admin", "Editor"]}

df1 = pandas.DataFrame(d1, index={1, 2})
df2 = pandas.DataFrame(d2, index={1, 2})

df3 = pandas.concat([df1, df2], axis=1)
print('********\n', df3)

Выход:

********
      Name  ID    Role
1  Pankaj   1   Admin
2    Lisa   2  Editor

Объединение по столбцу имеет смысл, когда исходные объекты содержат разные виды данных объекта.

4. Назначение ключей объединенным индексам DataFrame

d1 = {"Name": ["Pankaj", "Lisa"], "ID": [1, 2]}
d2 = {"Name": "David", "ID": 3}

df1 = pandas.DataFrame(d1, index={1, 2})
df2 = pandas.DataFrame(d2, index={3})

df3 = pandas.concat([df1, df2], keys=["DF1", "DF2"])
print('********\n', df3)

Выход:

********
          Name  ID
DF1 1  Pankaj   1
    2    Lisa   2
DF2 3   David   3

5. Игнорировать исходные объекты DataFrame в конкатенации

d1 = {"Name": ["Pankaj", "Lisa"], "ID": [1, 2]}
d2 = {"Name": "David", "ID": 3}

df1 = pandas.DataFrame(d1, index={10, 20})
df2 = pandas.DataFrame(d2, index={30})

df3 = pandas.concat([df1, df2], ignore_index=True)
print('********\n', df3)

Выход:

********
      Name  ID
0  Pankaj   1
1    Lisa   2
2   David   3

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

6. Ссылки

  • Документация по API pandas.concat()