Что возвращает только группа панд?

#python #pandas #pandas-groupby

Вопрос:

Я заметил, что в некоторых своих кодах я выполнял разные операции с одним и тем же групповым вызовом. Поэтому я сделал только один звонок:

 c = df.groupby("SP")
 

И выполнил различные операции с объектом «DataFrameGroupBy», такие как:

 c["SP"].cumsum()
 

И несколько других, большинство из них были типа преобразования cumsum, так что ожидался тот же индекс.

Пока все хорошо, это несколько ускорило сценарий, но затем я заметил, что время от времени добавлял атрибуты в исходный df после создания объекта groupby (c). Эти атрибуты использовались при операциях группирования. Похоже, это сработало отлично.

Но когда некоторые строки удаляются из df, агрегированные операции над c все еще выполняются на старом df со всеми строками.

Так что же такое DataFrameGroubBy? является ли это только указателем на индексы? Или это делает какую-то копию фрейма данных. Из поведения, описанного выше, следует, что копия создается при изменении количества строк в исходном кадре данных.

Комментарии:

1. Как вы отбросили строки ? Возможно, вы создали новый фрейм данных, в то время как на старый все еще ссылается groupby ?

2. df.drop(df.индекс[условие], inplace=True) Я использовал это.

3. Это очень хороший вопрос, и документация бесполезна, возвращает объект groupby, содержащий информацию о группах. Я не могу найти документацию для объекта DataFrameGroubBy. Я не знал, что вы можете добавлять столбцы после группировки, это приятно. После некоторого тестирования: агрегации кэшируются для кадра данных, но не для столбца, повторение групп после удаления строки приводит к тому, что индексы выходят за рамки . Очень интересно.