pandas.concat
-
pandas.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)[source] -
Объединение объектов pandas вдоль определённой оси с опциональной логикой множеств вдоль других осей.
Также может добавлять уровень иерархической индексации по оси объединения, что может быть полезно, если метки совпадают (или перекрываются) на указанном номере оси.
Параметры: objs : последовательность или отображение объектов Series, DataFrame или Panel
Если передан словарь, отсортированные ключи будут использованы в качестве аргумента
keys, если он не передан, в противном случае будут выбраны значения (см. ниже). Любые объекты None будут опущены безмолвно, если все они не None, в этом случае будет поднято исключение ValueErroraxis : {0/’index’, 1/’columns’}, по умолчанию 0
Ось для объединения
join : {‘inner’, ‘outer’}, по умолчанию ‘outer’
Как обрабатывать индексы на других осях
join_axes : список объектов Index
Конкретные индексы для использования для других осей n - 1 вместо выполнения логики внутреннего/внешнего множества
ignore_index : булево значение, по умолчанию False
Если True, не использовать значения индекса вдоль оси объединения. Результирующая ось будет иметь метки 0, …, n - 1. Это полезно, если вы объединяете объекты, где ось объединения не имеет осмысленной информации индексации. Обратите внимание, что значения индекса на других осях все еще учитываются в объединении.
keys : последовательность, по умолчанию None
Если переданы несколько уровней, должна содержать кортежи. Построить иерархический индекс, используя переданные ключи как внешний уровень
levels : список последовательностей, по умолчанию None
Конкретные уровни (уникальные значения) для использования при построении MultiIndex. В противном случае они будут выведены из ключей
names : список, по умолчанию None
Имена уровней в результирующем иерархическом индексе
verify_integrity : булево значение, по умолчанию False
Проверить, содержит ли новая ось объединения дубликаты. Это может быть очень дорого по сравнению с фактическим объединением данных
sort : булево значение, по умолчанию None
Сортировать ось, не участвующую в объединении, если она ещё не выровнена, когда
joinравно ‘outer’. Текущее значение по умолчанию для сортировки устарело и будет изменено на не-сортировку в будущей версии pandas.Явно передайте
sort=Trueдля отключения предупреждения и сортировки. Явно передайтеsort=Falseдля отключения предупреждения и не сортировать.Это не влияет, когда
join='inner', что уже сохраняет порядок оси, не участвующей в объединении.Введено в версии 0.23.0.
copy : булево значение, по умолчанию 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.23.4/generated/pandas.concat.html