пытаясь заставить "inplace" работать в моем расширении для pandas - PullRequest
0 голосов
/ 28 января 2020

Я написал следующий класс для удаления тренда из моего pandas фрейма данных.

import pandas as pd
@pd.api.extensions.register_dataframe_accessor("detrend")
class detrend:
   def __init__(self, pandas_obj):
       self._obj = pandas_obj
   def percent(self, inplace=False):

       change_m = self._obj.copy()
       for name in change_m.columns:
           col = self._obj[name]
           change = (col[col.first_valid_index()] /
                     col[col.last_valid_index()])**(1 / (col.count() - 1))
           change_m[name] = change
           change_m[name] = change_m[name].cumprod()
       result = change_m * self._obj
       if (inplace == True):
           self._obj = result
       return(result)

метод работает нормально и возвращает правильный фрейм данных. единственное, что меня смущает, это следующее:

       if (inplace == True):
          self._obj = result

Когда я передаю на место = True, изменения не сохраняются в исходном кадре данных. Что я делаю неправильно? Как я должен сделать работу на месте в моем методе?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...