Чтобы выполнять операции конкатенации в Pandas DataFrame, используйте функцию Pandas concat(), которая выполняет всю тяжелую работу по выполнению операций конкатенации вместе с осью.
- Что такое функция concat() в Pandas?
- Синтаксис
- Параметры
- Возвращаемое значение
- Примеры программ на Pandas concat()
- Программа, показывающая работу метода concat() в Python
- Программа для назначения ключей отдельным фреймам данных после их объединения
- Объединение с помощью df.append()
- Назначение ключей объединенным индексам DataFrame
- Игнорирование исходных объектов DataFrame в конкатенации
- Заключение
Что такое функция concat() в Pandas?
Pandas concat() — это встроенная функция, которая используется в Python для объединения объектов DataFrame вдоль определенной оси с дополнительной логикой набора, которая может быть объединением или пересечением по другим осям. Метод concat() принимает до пяти параметров и возвращает объединенные объекты.
Синтаксис
|
1 |
Параметры
Функция concat() имеет пять следующих параметров.
- Первый параметр — это objs, представляющий собой последовательность или сопоставление объектов серии, DataFrame или Panel.
- Второй параметр — это axis(0,1). Это ось, на которой выполняется конкатенация на всем протяжении.
- Третий параметр — join. Он может иметь 2 значения: «inner» или «outer». По умолчанию это «outer». Это в основном для того, как обрабатывать индексы на других осях.
- Четвертый параметр — join_axes — перечисляет все объекты индекса.
- Пятый параметр — ignore_index. Он имеет логический тип, и значение, установленное по умолчанию, равно false. Если для него установлено значение true, то он не использует значения индекса на оси конкатенации. Ось будет помечена как 0,1,2,…,n-1.
Возвращаемое значение
Функция concat() возвращает объект типа objs. Например, когда мы объединяем все ряды, где ось = 0, вместе с индексом, он возвращает ряды.
Примеры программ на Pandas concat()

Программа, показывающая работу метода concat() в Python
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
import pandas as pd data_set1 = { 'Name': ['Rohit', 'Mohit', 'Sohit', 'Arun', 'Shubh'], 'Roll no': ['01', '02', '03', '04', '05'], 'maths': ['93', '63', '74', '94', '83'], 'science': ['88', '55', '66', '94', '35'], 'english': ['93', '74', '84', '92', '87']} data_set2 = { 'Name': ['Karan', 'Rishu', 'Swetank', 'Rishabh', 'Shuvam'], 'Roll no': ['06', '07', '08', '09', '10'], 'maths': ['95', '62', '64', '14', '63'], 'science': ['58', '59', '86', '74', '55'], 'english': ['96', '77', '89', '42', '87']} # Changing the above dictionary into dataframe df1 = pd.DataFrame(data_set1) df2 = pd.DataFrame(data_set2) # Concating both the dataframes print(pd.concat([df1, df2])) |
Выход:
|
1 2 3 4 5 6 7 8 9 10 11 |
Name Roll no maths science english 0 Rohit 01 93 88 93 1 Mohit 02 63 55 74 2 Sohit 03 74 66 84 3 Arun 04 94 94 92 4 Shubh 05 83 35 87 0 Karan 06 95 58 96 1 Rishu 07 62 59 77 2 Swetank 08 64 86 89 3 Rishabh 09 14 74 42 4 Shuvam 10 63 55 87 |
В приведенном выше примере мы видели, что мы создали два фрейма данных, содержащих данные разных студентов, и с помощью concat() мы объединили данные обоих фреймов данных и получили желаемый результат в виде одного DataFrame.
Программа для назначения ключей отдельным фреймам данных после их объединения
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
import pandas as pd data_set1 = { 'Name': ['Rohit', 'Mohit', 'Sohit', 'Arun', 'Shubh'], 'Roll no': ['01', '02', '03', '04', '05'], 'maths': ['93', '63', '74', '94', '83'], 'science': ['88', '55', '66', '94', '35'], 'english': ['93', '74', '84', '92', '87']} data_set2 = { 'Name': ['Karan', 'Rishu', 'Swetank', 'Rishabh', 'Shuvam'], 'Roll no': ['06', '07', '08', '09', '10'], 'maths': ['95', '62', '64', '14', '63'], 'science': ['58', '59', '86', '74', '55'], 'english': ['96', '77', '89', '42', '87']} # Changing the above dictionary into dataframe df1 = pd.DataFrame(data_set1) df2 = pd.DataFrame(data_set2) # Concating both the dataframes print(pd.concat([df1, df2], keys=['Set1', 'Set2'])) |
Выход:
|
1 2 3 4 5 6 7 8 9 10 11 |
Name Roll no maths science english Set1 0 Rohit 01 93 88 93 1 Mohit 02 63 55 74 2 Sohit 03 74 66 84 3 Arun 04 94 94 92 4 Shubh 05 83 35 87 Set2 0 Karan 06 95 58 96 1 Rishu 07 62 59 77 2 Swetank 08 64 86 89 3 Rishabh 09 14 74 42 4 Shuvam 10 63 55 87 |
В приведенном выше примере мы видим, что в одних и тех же данных учащихся мы упомянули ключи как set1 и set2, чтобы пользователи знали, что они являются частью двух разных фреймов данных, и чтобы они поняли, откуда набор данных начинается индивидуально. Индекс результата дублируется; каждый индекс повторяется.
Если результирующий объект должен следовать своей индексации, установите для ignore_index значение True.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
import pandas as pd data_set1 = { 'Name': ['Rohit', 'Mohit', 'Sohit', 'Arun', 'Shubh'], 'Roll no': ['01', '02', '03', '04', '05'], 'maths': ['93', '63', '74', '94', '83'], 'science': ['88', '55', '66', '94', '35'], 'english': ['93', '74', '84', '92', '87']} data_set2 = { 'Name': ['Karan', 'Rishu', 'Swetank', 'Rishabh', 'Shuvam'], 'Roll no': ['06', '07', '08', '09', '10'], 'maths': ['95', '62', '64', '14', '63'], 'science': ['58', '59', '86', '74', '55'], 'english': ['96', '77', '89', '42', '87']} # Changing the above dictionary into dataframe df1 = pd.DataFrame(data_set1) df2 = pd.DataFrame(data_set2) # Concating both the dataframes print(pd.concat([df1, df2], keys=['Set1', 'Set2'], ignore_index=True)) |
Выход:
|
1 2 3 4 5 6 7 8 9 10 11 |
Name Roll no maths science english 0 Rohit 01 93 88 93 1 Mohit 02 63 55 74 2 Sohit 03 74 66 84 3 Arun 04 94 94 92 4 Shubh 05 83 35 87 5 Karan 06 95 58 96 6 Rishu 07 62 59 77 7 Swetank 08 64 86 89 8 Rishabh 09 14 74 42 9 Shuvam 10 63 55 87 |
Обратите внимание, индекс полностью меняется, и ключи также переопределяются.
Если необходимо добавить два объекта по оси = 1, будут добавлены новые столбцы.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
import pandas as pd data_set1 = { 'Name': ['Rohit', 'Mohit', 'Sohit', 'Arun', 'Shubh'], 'Roll no': ['01', '02', '03', '04', '05'], 'maths': ['93', '63', '74', '94', '83'], 'science': ['88', '55', '66', '94', '35'], 'english': ['93', '74', '84', '92', '87']} data_set2 = { 'Name': ['Karan', 'Rishu', 'Swetank', 'Rishabh', 'Shuvam'], 'Roll no': ['06', '07', '08', '09', '10'], 'maths': ['95', '62', '64', '14', '63'], 'science': ['58', '59', '86', '74', '55'], 'english': ['96', '77', '89', '42', '87']} # Changing the above dictionary into dataframe df1 = pd.DataFrame(data_set1) df2 = pd.DataFrame(data_set2) # Concating both the dataframes print(pd.concat([df1, df2], keys=['Set1', 'Set2'], axis=1)) |
Выход:
|
1 2 3 4 5 6 7 |
Set1 Set2 Name Roll no maths science english Name Roll no maths science english 0 Rohit 01 93 88 93 Karan 06 95 58 96 1 Mohit 02 63 55 74 Rishu 07 62 59 77 2 Sohit 03 74 66 84 Swetank 08 64 86 89 3 Arun 04 94 94 92 Rishabh 09 14 74 42 4 Shubh 05 83 35 87 Shuvam 10 63 55 87 |
Вы можете видеть, что мы добавили два фрейма данных со стороны столбца, потому что мы установили ось = 1.
Объединение с помощью df.append()
Чтобы объединить два DataFrame без использования метода concat(), используйте метод DataFrame.append(). Мы можем объединить два DataFrame, используя метод Pandas DataFrame append(). Метод append() используется для добавления строк одного DataFrame в конец другого DataFrame.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
import pandas as pd data_set1 = { 'Name': ['Rohit', 'Mohit', 'Sohit', 'Arun', 'Shubh'], 'Roll no': ['01', '02', '03', '04', '05'], 'maths': ['93', '63', '74', '94', '83'], 'science': ['88', '55', '66', '94', '35'], 'english': ['93', '74', '84', '92', '87']} data_set2 = { 'Name': ['Karan', 'Rishu', 'Swetank', 'Rishabh', 'Shuvam'], 'Roll no': ['06', '07', '08', '09', '10'], 'maths': ['95', '62', '64', '14', '63'], 'science': ['58', '59', '86', '74', '55'], 'english': ['96', '77', '89', '42', '87']} # Changing the above dictionary into dataframe df1 = pd.DataFrame(data_set1) df2 = pd.DataFrame(data_set2) print("df1:\n", df1, "\n\ndf2:\n", df2) print("\nAppended Dataframe:\n") print(df1.append(df2)) |
Выход:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
df1: Name Roll no maths science english 0 Rohit 01 93 88 93 1 Mohit 02 63 55 74 2 Sohit 03 74 66 84 3 Arun 04 94 94 92 4 Shubh 05 83 35 87 df2: Name Roll no maths science english 0 Karan 06 95 58 96 1 Rishu 07 62 59 77 2 Swetank 08 64 86 89 3 Rishabh 09 14 74 42 4 Shuvam 10 63 55 87 Appended Dataframe: Name Roll no maths science english 0 Rohit 01 93 88 93 1 Mohit 02 63 55 74 2 Sohit 03 74 66 84 3 Arun 04 94 94 92 4 Shubh 05 83 35 87 0 Karan 06 95 58 96 1 Rishu 07 62 59 77 2 Swetank 08 64 86 89 3 Rishabh 09 14 74 42 4 Shuvam 10 63 55 87 |
Полезным ярлыком для concat являются методы добавления экземпляра в Series и DataFrame. Эти методы предшествовали concat. Они объединяются по оси = 0, а именно по индексу. Метод append() также может принимать несколько объектов.
Назначение ключей объединенным индексам DataFrame
Чтобы назначить ключи объединенному фрейму данных, передайте параметр keys при объединении фрейма данных методу concat().
См. следующий код, в котором мы назначаем ключи конкатенированным индексам DataFrame.
|
1 2 3 4 5 6 7 8 9 10 |
import pandas as pd dataset1 = {"Name": ["Justin", "Roiland"], "ID": [1, 2]} dataset2 = {"Name": "Dan", "ID": 3} df1 = pd.DataFrame(dataset1, index={1, 2}) df2 = pd.DataFrame(dataset2, index={3}) df3 = pd.concat([df1, df2], keys=["X", "Y"]) print('********\n', df3) |
Выход:
|
1 2 3 4 5 6 7 8 9 10 |
import pandas as pd dataset1 = {"Name": ["Justin", "Roiland"], "ID": [1, 2]} dataset2 = {"Name": "Dan", "ID": 3} df1 = pd.DataFrame(dataset1, index={1, 2}) df2 = pd.DataFrame(dataset2, index={3}) df3 = pd.concat([df1, df2], keys=["X", "Y"]) print(df3) |
Вы можете видеть, что мы назначили ключи X и Y объединенному фрейму данных df3.
Игнорирование исходных объектов DataFrame в конкатенации
Чтобы игнорировать исходные объекты DataFrame в concat, передайте параметру ignore_index значение True, и вы получите желаемый результат.
См. следующий код.
|
1 2 3 4 5 6 7 8 9 10 |
import pandas as pd dataset1 = {"Name": ["Justin", "Roiland"], "ID": [1, 2]} dataset2 = {"Name": "Dan", "ID": 3} df1 = pd.DataFrame(dataset1, index={1, 2}) df2 = pd.DataFrame(dataset2, index={3}) df3 = pd.concat([df1, df2], ignore_index=True) print(df3) |
Выход:
|
1 2 3 4 |
Name ID 0 Justin 1 1 Roiland 2 2 Dan 3 |
Метод concat() полезен, когда индексы в исходных объектах не имеют особого смысла. Таким образом, мы можем игнорировать их и назначать индексы по умолчанию для окончательного выходного DataFrame.
Заключение
При объединении DataFrame в Pandas у вас может быть несколько целей. Например, вы можете захотеть «добавить» к ним данные в конец фрейма. Или, может быть, вы хотите добавить больше столбцов, как в нашем случае.
Существует четыре основных способа объединения Pandas DataFrame: конкатенация, объединение, слияние и добавление. В этом руководстве мы рассмотрели метод Pandas concat() для выполнения конкатенации.
