Как ссылаться на атрибуты индекса в операторе цепочки 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()
и это должно работать.