pandas.concat
-
pandas.concat(objs, axis=0, join='outer', join_axes=None, ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, copy=True)[source] -
Объединение объектов pandas по определённой оси с необязательной логикой множества по другим осям.
Также можно добавить уровень иерархической индексации по оси объединения, что может быть полезно, если метки совпадают (или перекрываются) на указанном номере оси.
Параметры: objs : последовательность или отображение объектов Series, DataFrame или Panel
Если передаётся словарь, отсортированные ключи будут использованы как аргумент
keys, если он не передаётся, то будут выбраны значения (см. ниже). Любые None объекты будут пропущены безмолвно, за исключением случая, когда все они являются None, в этом случае будет возбуждено исключение ValueErroraxis : {0/’index’, 1/’columns’}, по умолчанию 0
Ось для объединения
join : {‘inner’, ‘outer’}, по умолчанию ‘outer’
Как обрабатывать индексы на других осях
join_axes : список объектов Index
Указанные индексы для использования на других осях n-1 вместо выполнения логики inner/outer
ignore_index : boolean, по умолчанию False
Если True, не использовать значения индекса вдоль оси объединения. Результирующая ось будет иметь метки 0, ..., n - 1. Это полезно, если вы объединяете объекты, где ось объединения не имеет осмысленной информации об индексации. Обратите внимание, что значения индексов на других осях всё ещё учитываются в объединении.
keys : последовательность, по умолчанию None
Если передано несколько уровней, должно содержать кортежи. Создать иерархический индекс, используя переданные ключи как внешний уровень
levels : список последовательностей, по умолчанию None
Уникальные значения для построения MultiIndex. В противном случае они будут вычислены по ключам
names : список, по умолчанию None
Имена уровней в результирующем иерархическом индексе
verify_integrity : boolean, по умолчанию False
Проверить, содержит ли новая ось объединения дубликаты. Это может быть очень затратно по времени относительно фактического объединения данных
copy : boolean, по умолчанию True
Если False, не копировать данные лишний раз
Возвращаемое значение: concatenated : объект, тип objs
При объединении всех
Seriesпо индексу (axis=0), возвращаетсяSeries. Когдаobjsсодержит по крайней мере одинDataFrame, возвращаетсяDataFrame. При объединении по столбцам (axis=1), возвращаетсяDataFrame.См. также
Series.append,DataFrame.append,DataFrame.join,DataFrame.mergeПримечания
Аргументы keys, levels и names — все необязательны.
Подробное описание того, как этот метод соотносится с другими инструментами для объединения объектов pandas, можно найти здесь.
Примеры
Объединение двух
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]) animal letter number 0 NaN a 1 1 NaN b 2 0 cat c 3 1 dog d 4
Объединение
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']
© 2008–2012, 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/0.22.0/generated/pandas.concat.html