gpt4 book ai didi

python - 在类里面构建一系列 df 操作的更好方法

转载 作者:太空宇宙 更新时间:2023-11-03 11:16:32 24 4
gpt4 key购买 nike

如何更好地在类中构造代码,以便类返回所需的 df,但没有调用 a 的 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()

最佳答案

管道

您可能希望利用的一个功能是 pd.DataFrame.pipe .这被认为是“pandorable”,因为它有助于运算符链接。

在我看来,您应该将读取数据到数据帧与操作数据帧分开。例如:

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原生的,而是第三方的toolz库确实提供此功能。这允许您延迟定义链式函数。请注意相反的操作顺序,即 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 提供了一种灵活且适应性强的解决方案。例如,您可以定义任意数量的组合,并有选择地或重复地在工作流程的不同点应用它们。

关于python - 在类里面构建一系列 df 操作的更好方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50680275/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com