Python 在类中构造一系列df操作的更好方法
如何更好地构造类中的代码,以便类返回所需的Python 在类中构造一系列df操作的更好方法,python,pandas,oop,dataframe,functional-programming,Python,Pandas,Oop,Dataframe,Functional Programming,如何更好地构造类中的代码,以便类返回所需的df,但没有按顺序调用许多其他方法的main方法。我发现,在很多情况下,我达到这种结构,它似乎很糟糕。我有一个df,我只是用其他基本函数(我的单元测试)的结果覆盖它,直到我得到我想要的 class A: def main(self): df = self.load_file_into_df() df = self.add_x_columns(df) df = self.calculate_y(df) df = self.calc
df
,但没有按顺序调用许多其他方法的main方法。我发现,在很多情况下,我达到这种结构,它似乎很糟糕。我有一个df
,我只是用其他基本函数(我的单元测试)的结果覆盖它,直到我得到我想要的
class A:
def main(self):
df = self.load_file_into_df()
df = self.add_x_columns(df)
df = self.calculate_y(df)
df = self.calculate_consequence(df)
...
return df
def add_x_columns(df)
def calculate_y(df)
def calculate_consequence(df)
...
# now use it somewhere else
df = A().main()
管
您可能希望利用的一个功能是。这被认为是“潘多拉”,因为它有助于操作员链接
在我看来,应该将读取数据到数据帧与操作数据帧分开。例如:
class A:
def main(self):
df = self.load_file_into_df()
df = df.pipe(self.add_x_columns)\
.pipe(self.calculate_y)\
.pipe(self.calculate_consequence)
return df
组成
函数组合不是Python固有的,但第三方库确实提供了此功能。这允许您惰性地定义链接函数。注意操作顺序相反,即首先执行compose
的最后一个参数
from toolz import compose
class A:
def main(self)
df = self.load_file_into_df()
transformer = compose(self.calculate_consequence,
self.calculate_y,
self.add_x_columns)
df = df.pipe(transformer)
return df
在我看来,compose
提供了一个灵活且适应性强的解决方案。例如,您可以定义任意数量的合成,并在工作流中的不同点选择性地或重复地应用它们