Почему `.keys ()` возвращает `Index` для Pandas` DataFrame`? - PullRequest
0 голосов
/ 14 мая 2019

Моя конечная цель - получить определенное значение по метке группы после взятия среднего значения для некоторых групп.Для этого я хотел бы получить список имен столбцов, чтобы я мог выбрать столбец с меткой группы, которая меня интересует. Однако поведение результирующего DataFrame отличается от ожидаемого:

import pandas as pd
df = pd.DataFrame({'x': ['a','b','c','a','b','c'], 'y': [1, 2, 3, 4, 5, 6]})
means = df.groupby('x').mean()

type(means) дает pandas.core.frame.DataFrame

means.keys() дает Index(['y'], dtype='object')

Однако документация для метода keys гласит:

Получить 'ось информации' (подробнее см. Индексация)

Это индекс для Series, столбцы для DataFrame и major_axis для Panel.

Результат mean.keys() выглядит какпротиворечите этому, поскольку mean является DataFrame, но возвращает Index, как если бы это было Series.Это предполагаемое поведение?Если бы это действительно была серия, я мог бы легко найти нужное значение, но в большинстве случаев он все еще действует как DataFrame.

Это pandas 0.24.2 на Python 3.7.3

1 Ответ

1 голос
/ 14 мая 2019

Результатом вашего оператора groupby действительно является фрейм данных. Это один столбец данных, но все же это кадр данных.

Таким образом, когда вы используете метод keys, вы должны получить метку столбца, в данном случае 'y'

means.keys()
Index(['y'], dtype='object')

Всякий раз, когда вы выбираете один столбец в кадре данных, pandas возвращает серию. Поэтому выбор columnn 'y' и использование ключей должны вернуть индекс.

means['y'].keys()
Index(['a', 'b', 'c'], dtype='object', name='x')

Термин «индекс» в этом случае сбивает с толку, поскольку и столбцы, и строки в Пандах являются элементами индекса.

...