Почему Pandas groupby-apply ведет себя странно и стирает внутренние данные с объектов? - PullRequest
0 голосов
/ 05 марта 2020

У меня есть функция "fun c", которая принимает pandas Dataframe в качестве параметра и возвращает объект класса A (созданный мной).

Я ожидал, что следующее произведет pandas Series, и это так, однако он не содержит ожидаемых результатов (данные представляют собой фрейм данных):

data.groupby(groupby_list).apply(lambda df: func(df))

Внутренние данные экземпляров класса A быть потерянным Я знаю это, потому что, если я распечатываю возврат fun c, тогда я вижу, что эти экземпляры являются такими, какими они должны быть.

Однако следующий хак работает отлично и дает результат Я хотел:

data.groupby(groupby_list).apply(lambda df: [func(df)]).apply(lambda x: x[0])

Кто-нибудь может догадаться, в чем причина? Я не могу воссоздать этот пример с простыми классами. Если это уместно, мой класс является дочерним классом, и я переписал много внутренних методов.

ОБНОВЛЕНИЕ Я уверен, что это как-то связано с тем, что мой класс является производным из словаря. Кроме того, если параметры groupby содержат категориальные столбцы, то все работает, как ожидалось.

...