pandas.concat
- pandas.concat(objs, axis=0, join='outer', ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, sort=False, copy=True)[source]
-
Объединение объектов pandas по определённой оси.
Позволяет использовать опциональную логику набора по другим осям.
Также можно добавить слой иерархической индексации по оси объединения, что может быть полезно, если метки совпадают (или перекрываются) на указанном номере оси.
- Параметры
-
- objs:последовательность или отображение объектов Series или DataFrame
-
Если передано отображение, отсортированные ключи будут использоваться в качестве аргумента keys, если он не передан, в этом случае будут выбраны значения (см. ниже). Любые объекты None будут отброшены без предупреждения, если все они равны None, будет поднято исключение ValueError.
- axis:{0/’индекс’, 1/’столбцы’}, по умолчанию 0
-
Ось для объединения.
- join:{‘inner’, ‘outer’}, по умолчанию ‘outer’
-
Как обрабатывать индексы на других осях (или осях).
- ignore_index:bool, по умолчанию False
-
Если True, не использовать значения индекса по оси объединения. Результирующая ось будет помечена как 0, …, n - 1. Это полезно, если вы объединяете объекты, где ось объединения не имеет осмысленной информации об индексации. Обратите внимание, что значения индексов на других осях всё равно учитываются при объединении.
- keys:последовательность, по умолчанию None
-
Если передано несколько уровней, должно содержать кортежи. Построить иерархический индекс, используя переданные ключи как внешний уровень.
- levels:список последовательностей, по умолчанию None
-
Конкретные уровни (уникальные значения) для построения MultiIndex. В противном случае они будут выведены из ключей.
- names:список, по умолчанию None
-
Имена уровней в результирующем иерархическом индексе.
- verify_integrity:bool, по умолчанию False
-
Проверить, содержит ли новая ось объединения дубликаты. Это может быть очень дорого по сравнению с фактическим объединением данных.
- sort:bool, по умолчанию False
-
Сортировать ось, не участвующую в объединении, если она ещё не выровнена, когда join равно ‘outer’. Это не имеет эффекта, когда
join='inner', которая уже сохраняет порядок оси, не участвующей в объединении.Изменено в версии 1.0.0: Изменено на не сортировку по умолчанию.
- copy:bool, по умолчанию True
-
Если False, не копировать данные без необходимости.
- Возвращает
-
- объект, тип objs
-
При объединении всех
Seriesпо индексу (axis=0), возвращаетсяSeries. Когдаobjsсодержит по крайней мере одинDataFrame, возвращаетсяDataFrame. При объединении по столбцам (axis=1), возвращаетсяDataFrame.
См. также
DataFrame.join-
Объединение DataFrame с использованием индексов.
DataFrame.merge-
Объединение DataFrame по индексам или столбцам.
Примечания
Аргументы keys, levels и names являются необязательными.
Пошаговое руководство по тому, как этот метод вписывается в другие инструменты для объединения объектов pandas, можно найти здесь.
Не рекомендуется создавать DataFrame, добавляя по одному строке в цикле 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
© 2008–2022, AQR Capital Management, LLC, Lambda Foundry, Inc. and PyData Development Team
Licensed under the 3-clause BSD License.
https://pandas.pydata.org/pandas-docs/version/1.5.0/reference/api/pandas.concat.html