Я написал следующий класс для удаления тренда из моего 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, изменения не сохраняются в исходном кадре данных. Что я делаю неправильно? Как я должен сделать работу на месте в моем методе?