#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. Я не знал, что вы можете добавлять столбцы после группировки, это приятно. После некоторого тестирования: агрегации кэшируются для кадра данных, но не для столбца, повторение групп после удаления строки приводит к тому, что индексы выходят за рамки . Очень интересно.