Python pandas concat dataframe

Pandas concat() в Python: объединение DataFrame с примерами

Чтобы выполнять операции конкатенации в Pandas DataFrame, используйте функцию Pandas concat(), которая выполняет всю тяжелую работу по выполнению операций конкатенации вместе с осью.

Что такое функция concat() в Pandas?

Pandas concat() — это встроенная функция, которая используется в Python для объединения объектов DataFrame вдоль определенной оси с дополнительной логикой набора, которая может быть объединением или пересечением по другим осям. Метод concat() принимает до пяти параметров и возвращает объединенные объекты.

Синтаксис

Параметры

Функция 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, вместе с индексом, он возвращает ряды.

Читайте также:  Java android widget example

Примеры программ на Pandas concat()

Метод Pandas concat() в Python

Программа, показывающая работу метода concat() в Python

В приведенном выше примере мы видели, что мы создали два фрейма данных, содержащих данные разных студентов, и с помощью concat() мы объединили данные обоих фреймов данных и получили желаемый результат в виде одного DataFrame .

Программа для назначения ключей отдельным фреймам данных после их объединения

В приведенном выше примере мы видим, что в одних и тех же данных учащихся мы упомянули ключи как set1 и set2, чтобы пользователи знали, что они являются частью двух разных фреймов данных, и чтобы они поняли, откуда набор данных начинается индивидуально. Индекс результата дублируется; каждый индекс повторяется.

Если результирующий объект должен следовать своей индексации, установите для ignore_index значение True.

Обратите внимание, индекс полностью меняется, и ключи также переопределяются.

Если необходимо добавить два объекта по оси = 1, будут добавлены новые столбцы.

Вы можете видеть, что мы добавили два фрейма данных со стороны столбца, потому что мы установили ось = 1.

Объединение с помощью df.append()

Чтобы объединить два DataFrame без использования метода concat(), используйте метод DataFrame.append(). Мы можем объединить два DataFrame, используя метод Pandas DataFrame append(). Метод append() используется для добавления строк одного DataFrame в конец другого DataFrame.

Полезным ярлыком для concat являются методы добавления экземпляра в Series и DataFrame. Эти методы предшествовали concat. Они объединяются по оси = 0, а именно по индексу. Метод append() также может принимать несколько объектов.

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

Чтобы назначить ключи объединенному фрейму данных, передайте параметр keys при объединении фрейма данных методу concat().

См. следующий код, в котором мы назначаем ключи конкатенированным индексам DataFrame.

Вы можете видеть, что мы назначили ключи X и Y объединенному фрейму данных df3.

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

Чтобы игнорировать исходные объекты DataFrame в concat, передайте параметру ignore_index значение True, и вы получите желаемый результат.

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

Заключение

При объединении DataFrame в Pandas у вас может быть несколько целей. Например, вы можете захотеть «добавить» к ним данные в конец фрейма. Или, может быть, вы хотите добавить больше столбцов, как в нашем случае.

Существует четыре основных способа объединения Pandas DataFrame: конкатенация, объединение, слияние и добавление. В этом руководстве мы рассмотрели метод Pandas concat() для выполнения конкатенации.

Источник

pandas.concat#

Can also add a layer of hierarchical indexing on the concatenation axis, which may be useful if the labels are the same (or overlapping) on the passed axis number.

Parameters : objs a sequence or mapping of Series or DataFrame objects

If a mapping is passed, the sorted keys will be used as the keys argument, unless it is passed, in which case the values will be selected (see below). Any None objects will be dropped silently unless they are all None in which case a ValueError will be raised.

axis , default 0

The axis to concatenate along.

join , default ‘outer’

How to handle indexes on other axis (or axes).

ignore_index bool, default False

If True, do not use the index values along the concatenation axis. The resulting axis will be labeled 0, …, n — 1. This is useful if you are concatenating objects where the concatenation axis does not have meaningful indexing information. Note the index values on the other axes are still respected in the join.

keys sequence, default None

If multiple levels passed, should contain tuples. Construct hierarchical index using the passed keys as the outermost level.

levels list of sequences, default None

Specific levels (unique values) to use for constructing a MultiIndex. Otherwise they will be inferred from the keys.

names list, default None

Names for the levels in the resulting hierarchical index.

verify_integrity bool, default False

Check whether the new concatenated axis contains duplicates. This can be very expensive relative to the actual data concatenation.

sort bool, default False

Sort non-concatenation axis if it is not already aligned.

copy bool, default True

If False, do not copy data unnecessarily.

Returns : object, type of objs

When concatenating all Series along the index (axis=0), a Series is returned. When objs contains at least one DataFrame , a DataFrame is returned. When concatenating along the columns (axis=1), a DataFrame is returned.

Join DataFrames using indexes.

Merge DataFrames by indexes or columns.

The keys, levels, and names arguments are all optional.

A walkthrough of how this method fits in with other tools for combining pandas objects can be found here.

It is not recommended to build DataFrames by adding single rows in a for loop. Build a list of rows and make a DataFrame in a single concat.

>>> s1 = pd.Series(['a', 'b']) >>> s2 = pd.Series(['c', 'd']) >>> pd.concat([s1, s2]) 0 a 1 b 0 c 1 d dtype: object 

Clear the existing index and reset it in the result by setting the ignore_index option to True .

>>> pd.concat([s1, s2], ignore_index=True) 0 a 1 b 2 c 3 d dtype: object 

Add a hierarchical index at the outermost level of the data with the keys option.

>>> pd.concat([s1, s2], keys=['s1', 's2']) s1 0 a 1 b s2 0 c 1 d dtype: object 

Label the index keys you create with the names option.

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

Combine two DataFrame objects with identical columns.

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

Combine DataFrame objects with overlapping columns and return everything. Columns outside the intersection will be filled with NaN values.

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

Combine DataFrame objects with overlapping columns and return only those that are shared by passing inner to the join keyword argument.

>>> pd.concat([df1, df3], join="inner") letter number 0 a 1 1 b 2 0 c 3 1 d 4 

Combine DataFrame objects horizontally along the x axis by passing in 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 

Prevent the result from including duplicate index values with the verify_integrity option.

>>> 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'] 

Append a single row to the end of a DataFrame object.

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

Источник

Оцените статью