我正在努力赞扬* .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)
出错了。
我也不知道如何修复它。
答案 0 :(得分:0)
您正在将DataFrame
返回的self.df
self.subr()
传递给apply
,但实际上apply
仅将函数作为参数(see examples here)