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()