Spec-Zone.ru › pandas 2

pandas.core.groupby.DataFrameGroupBy.take

DataFrameGroupBy.take(indices, axis=_NoDefault.no_default, **kwargs)[source]

Возвращает элементы в заданных позиционных индексах в каждой группе.

Это означает, что мы не индексируем по фактическим значениям в атрибуте индекса объекта. Мы индексируем по фактическому положению элемента в объекте.

Если для некоторой группы запрошенного индекса не существует, этот метод вызовет исключение. Чтобы получить аналогичное поведение, игнорирующее индексы, которые не существуют, см. DataFrameGroupBy.nth().

Параметры:
indices:array-like

Массив целых чисел, указывающих, какие позиции взять.

axis:{0 или ‘index’, 1 или ‘columns’, None}, по умолчанию 0

Ось, на которой нужно выбрать элементы. 0 означает, что мы выбираем строки, 1 означает, что мы выбираем столбцы.

Устарело начиная с версии 2.1.0: Для axis=1, работайте с базовым объектом вместо этого. В противном случае ключевое слово axis не требуется.

**kwargs

Для совместимости с numpy.take(). Не оказывает влияния на вывод.

Возвращает:
DataFrame

DataFrame, содержащий элементы, взятые из каждой группы.

См. также

DataFrame.take

Взятие элементов из Series вдоль оси.

DataFrame.loc

Выборка подмножества DataFrame по меткам.

DataFrame.iloc

Выборка подмножества DataFrame по позициям.

numpy.take

Взятие элементов из массива вдоль оси.

Примеры

>>> df = pd.DataFrame([('falcon', 'bird', 389.0),
...                    ('parrot', 'bird', 24.0),
...                    ('lion', 'mammal', 80.5),
...                    ('monkey', 'mammal', np.nan),
...                    ('rabbit', 'mammal', 15.0)],
...                   columns=['name', 'class', 'max_speed'],
...                   index=[4, 3, 2, 1, 0])
>>> df
     name   class  max_speed
4  falcon    bird      389.0
3  parrot    bird       24.0
2    lion  mammal       80.5
1  monkey  mammal        NaN
0  rabbit  mammal       15.0
>>> gb = df.groupby([1, 1, 2, 2, 2])

Взятие элементов в позициях 0 и 1 вдоль оси 0 (по умолчанию).

Обратите внимание, что выбранные индексы в результате не соответствуют нашим входным индексам 0 и 1. Это потому, что мы выбираем 0-ю и 1-ю строки, а не строки, индексы которых равны 0 и 1.

>>> gb.take([0, 1])
       name   class  max_speed
1 4  falcon    bird      389.0
  3  parrot    bird       24.0
2 2    lion  mammal       80.5
  1  monkey  mammal        NaN

Порядок указанных индексов влияет на порядок в результате. Здесь порядок поменян с предыдущего примера.

>>> gb.take([1, 0])
       name   class  max_speed
1 3  parrot    bird       24.0
  4  falcon    bird      389.0
2 1  monkey  mammal        NaN
  2    lion  mammal       80.5

Взятие элементов в индексах 1 и 2 вдоль оси 1 (выбор столбцов).

Мы можем взять элементы, используя отрицательные целые числа для положительных индексов, начиная с конца объекта, как и в Python-списках.

>>> gb.take([-1, -2])
       name   class  max_speed
1 3  parrot    bird       24.0
  4  falcon    bird      389.0
2 0  rabbit  mammal       15.0
  1  monkey  mammal        NaN

© 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.core.groupby.DataFrameGroupBy.take.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API