首页 > 解决方案 > 试图在我的熊猫扩展中“就地”工作

问题描述

我编写了以下课程以从我的 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

当我通过 inplace=True 时,更改不会保存到原始数据框中。我究竟做错了什么?我应该如何在我的方法中就地工作?

标签: pythonpandasoop

解决方案


推荐阅读