pandas.concat#
- pandas.concat(объекты, *, ось=0, join='outer', ignore_index=False, ключи=None, уровни=None, names=None, verify_integrity=False, sort=False, copy=None)[источник]#
Объединить объекты pandas вдоль определенной оси.
Позволяет использовать дополнительную логику множеств по другим осям.
Также может добавить уровень иерархической индексации на оси конкатенации, что может быть полезно, если метки одинаковы (или перекрываются) на переданном номере оси.
- Параметры:
- объектыпоследовательность или отображение объектов Series или DataFrame
Если передано отображение, отсортированные ключи будут использоваться как ключи аргумент, если он не передан, в этом случае значения будут выбраны (см. ниже). Любые объекты None будут тихо отброшены, если только они не все None, в этом случае будет вызвано ValueError.
- ось{0/'index', 1/'columns'}, по умолчанию 0
Ось для конкатенации.
- join{'inner', 'outer'}, по умолчанию 'outer'
Как обрабатывать индексы на другой оси (или осях).
- ignore_indexbool, по умолчанию False
Если True, не использовать значения индекса вдоль оси конкатенации. Результирующая ось будет помечена 0, …, n - 1. Это полезно, если вы конкатенируете объекты, где ось конкатенации не имеет осмысленной индексирующей информации. Обратите внимание, что значения индекса на других осях всё ещё учитываются при объединении.
- ключипоследовательность, по умолчанию None
Если передано несколько уровней, должны содержать кортежи. Создайте иерархический индекс, используя переданные ключи как самый внешний уровень.
- уровнисписок последовательностей, по умолчанию None
Конкретные уровни (уникальные значения) для использования при построении MultiIndex. В противном случае они будут выведены из ключей.
- namesсписок, по умолчанию None
Имена для уровней в результирующем иерархическом индексе.
- verify_integritybool, по умолчанию False
Проверить, содержит ли новая объединенная ось дубликаты. Это может быть очень затратно по сравнению с фактическим объединением данных.
- sortbool, по умолчанию False
Сортировать ось неконкатенации, если она ещё не выровнена. Одно исключение: когда ось неконкатенации — DatetimeIndex и join='outer', и ось ещё не выровнена. В этом случае ось неконкатенации всегда сортируется лексикографически.
- copybool, по умолчанию True
Если False, не копировать данные без необходимости.
- Возвращает:
- объект, тип объектов
При конкатенации всех
Seriesвдоль индекса (axis=0),Seriesвозвращается. Когдаobjsсодержит хотя бы одинDataFrame, aDataFrameвозвращается. При объединении по столбцам (axis=1),DataFrameвозвращается.
Смотрите также
DataFrame.joinОбъединение DataFrames с использованием индексов.
DataFrame.mergeОбъединение DataFrame по индексам или столбцам.
Примечания
Аргументы keys, levels и names являются необязательными.
Пошаговое руководство о том, как этот метод сочетается с другими инструментами для объединения объектов pandas, можно найти здесь.
Не рекомендуется создавать DataFrames путем добавления отдельных строк в цикле 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