Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在python中将数据帧作为实例变量处理_Python_Pandas_Class_Oop - Fatal编程技术网

如何在python中将数据帧作为实例变量处理

如何在python中将数据帧作为实例变量处理,python,pandas,class,oop,Python,Pandas,Class,Oop,全部, 我在网上没有看到类似的问题,如果有,请引导我回答这个问题 以下是我试图做的: 我有一个类,它在一个数据框架中构建了一个金融模型(因此在数据框架中有几十列) 每列都有一个公式,许多列使用前面列中的信息 有人能推荐一下解决这个问题的好方法吗 #导入所需的库 作为pd进口熊猫 将numpy作为np导入 类DataFrameInClass: 定义初始化(self,a:int,b:int): self.a=a self.b=b self.df=pd.DataFrame() def get_df

全部,

我在网上没有看到类似的问题,如果有,请引导我回答这个问题

以下是我试图做的:

  • 我有一个类,它在一个数据框架中构建了一个金融模型(因此在数据框架中有几十列)
  • 每列都有一个公式,许多列使用前面列中的信息
有人能推荐一下解决这个问题的好方法吗

#导入所需的库
作为pd进口熊猫
将numpy作为np导入
类DataFrameInClass:
定义初始化(self,a:int,b:int):
self.a=a
self.b=b
self.df=pd.DataFrame()
def get_df(自我)->pd.DataFrame:
返回pd.DataFrame(np.random.randint(self.a,self.b,size=(100,4)),columns=list('ABCD'))
def设置_df(自):
self.df=self.get_df
def计算平方(自)->pd.系列:
#方法1-分别计算每列
df=self.df.copy(deep=True)
df['A_Square']=df['A']**2
返回pd.系列(数据=df['A_Square'],索引=df.索引)
def计算立方(自):
#方法2-修改数据帧
self.df['A_Cubed']=self.df['A']**3
我不确定仅仅修改每个方法中的数据帧是否是一种好的做法(请有人帮助我更好地理解这一点)。或者我应该重新计算每个方法中的列(这感觉也是个坏主意)。
例如,在下面的例子中,如果将一个_平方值作为实例变量,我可以计算一行中的一个_立方。然而,这也意味着我的类将有如此多的实例变量

,我将在一个函数中使用club操作数据帧,然后返回更新后的数据帧。例如,在构造函数中,您可以构建
self.df=pd.DataFrame(np.random.randint(self.a,self.b,size=(100,4)),columns=list('ABCD')
,然后调用
calculate\u a\u square
,然后调用`self.df['a\u square']=self.df['a']******2,然后调用self.df['a\u Cubed']=self.df['a']**['a']**['a'**'**'**,我有150多列,其中多个列的计算需要多个步骤。如果将它们合并到一个函数中,这难道不会使函数变得如此复杂吗?另外,一个函数通常不应该单独做一件事。我同意,我的意思不是在一个函数中转储所有操作,如果它们没有内聚性的话。这肯定是一种权衡。如果你正在建造一条管道,那么最好将操作保持在一个地方。