Если вы посмотрите на Pandas groupby документацию , вы увидите, что она возвращает объект DataFrameGroupBy
или SeriesGroupBy
, в зависимости от того, вызвали ли вы .groupby
на DataFrame
или Series
.Поэтому поведение, которое вы наблюдали, не должно удивлять.
Более важно, почему Панды делают это?Ну, в вашем случае вы группируете кучу строк вместе.Панды могут придерживаться некоторого представления сгруппированного DataFrame
, но не могут с ним ничего делать (т.е. возвращать его вам как другой DataFrame
), пока вы не примените функцию агрегирования, такую как .sum
или * 1013.*.Функция агрегации берет каждую группу строк и определяет способ превращения этой строки в одну строку.Попробуйте применить одну из этих функций агрегирования к band_gaps
и посмотрите, что произойдет.
Например:
df.groupby('column1').mean()
вернет DataFrame
, выражающее среднее значение каждого столбца после группировки всех строкпо column1
.
df.groupby('column1')['column2'].sum()
вернет Series
с суммой значений в column2
после группировки по column1
.Обратите внимание, что
df.groupby('column1').sum()['column2']
также возможно, но в этом случае вы берете интересующий вас столбец после агрегирования по всем столбцам, что медленнее, чем нарезка перед агрегацией.