pandas.concat
- pandas.concat(objs, *, axis=0, join='outer', ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, sort=False, copy=None)[source]
-
Объединение объектов pandas по определённой оси.
Позволяет выполнять необязательную логику множеств по другим осям.
Также может добавлять уровень иерархической индексации по оси объединения, что может быть полезно, если метки совпадают (или перекрываются) на указанном номере оси.
- Параметры:
-
- objs:последовательность или отображение объектов Series или DataFrame
-
Если передано отображение, отсортированные ключи будут использованы в качестве аргумента keys, если он не передан, в этом случае будут выбраны значения (см. ниже). Любые объекты None будут удалены без предупреждений, если все они равны None, то будет вызвано исключение ValueError.
- axis:{0/’index’, 1/’columns’}, по умолчанию 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
-
Отсортировать ось, не участвующую в объединении, если она ещё не выровнена. Исключением является случай, когда ось, не участвующая в объединении, является DatetimeIndex и join=’outer’, и ось не выровнена. В этом случае ось, не участвующая в объединении, всегда сортируется лексикографически.
- 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 в одном объединении.
Примеры
Объединить два
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/2.2.2/reference/api/pandas.concat.html