DataFrame

时间:2016-08-10 14:39:16

标签: python pandas

我正在努力赞扬* .csv文件。因此,我尝试创建一个类,帮助我简化DataFrame上的一些操作。

我创建了两个方法来解析包含'Price'列值的列'z'。

def subr(self):
    isone = self.df.z == 1.0
    if isone.any():
        atone = self.df.Price[isone].iloc[0]
        self.df.loc[self.df.z.between(0.8, 2.5), 'Benchmark'] = atone
        # df.loc[(df.r >= .8) & (df.r <= 1.4), 'value'] = atone
    return self.df

def obtain_z(self):
    "Return a column with z for E_ref"
    self.z_col = self.subr()
    self.dfnew = self.df.groupby((self.df.z < self.df.z.shift()).cumsum()).apply(self.z_col)
    return self.dfnew

def main():
    x = ParseDataBase('data.csv')
    file_content = x.read_file()
    new_df = x.obtain_z()

我收到以下错误:

  

'DataFrame'对象是可变的,因此无法进行散列

'DataFrame'对象是可变的意味着我们可以更改该Frame的元素。我不确定我什么时候哈希。

我注意到使用apply(self.z_col)出错了。

我也不知道如何修复它。

1 个答案:

答案 0 :(得分:0)

您正在将DataFrame返回的self.df self.subr()传递给apply,但实际上apply仅将函数作为参数(see examples here