pandas.core.groupby.DataFrameGroupBy.take#

DataFrameGroupBy.take(индексы, axis=, **kwargs)[источник]#

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

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

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

Параметры:
индексыarray-like

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

ось{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