Как ссылаться на атрибуты индекса в операторе цепочки groupby без имени DataFrame?

Есть ли способ написать groupby по index.attributes в цепочке после создания DataFrame, как это?

pd.read_excel('some_excel.xlsx').groupby(index.time)['some_var'].sum()

Я могу сделать это в две строки с помощью ссылки на DataFrame по имени следующим образом:

a = pd.read_excel('some_excel.xlsx')
b = a.groupby(a.index.time)['some_var'].sum()

или в одной строке с созданием фиктивного столбца следующим образом:

pd\
 .read_excel('some_excel.xlsx')\
 .assign(time = lambda x: x.index.time)\
 .groupby('time')\
 ['some_var'].sum()

но мне интересно, есть ли однострочный способ без дополнительных назначений?

Спасибо за ответ или ссылку на него.

PS Первоначально индекс является столбцом даты и времени (например, "2018-05-01 13:15:00"), и в нем нет столбца с именем "время".

1 ответ

Решение

Так что на самом деле, если "время" является атрибутом индекса, вы можете использовать lambda в groupby такие как:

pd.read_excel('some_excel.xlsx').groupby(lambda x: x.time)['some_var'].sum()

и это должно работать.

Другие вопросы по тегам