方法链接和从方法返回值

2024-09-28 20:45:51 发布

您现在位置:Python中文网/ 问答频道 /正文

这是一个关于Python类方法链接的一般性问题。我有一个类,它执行一些数据争用操作,并为这些方法返回一个数据帧。我正在尝试在创建dataframe对象后使用这些方法建立方法链,就像Pandas那样。然而,我似乎遇到了一些问题。下面是该类中两个方法的简单示例:

class Data:

    def __init__(self, df):
        self.df = df

    def remove_rows(self, col):
        df = (perform_some_operations)
        return df

    def collapse(self, cols):
        df = (perform_some_operations)
        return df

所以我可以这样使用它:

df = Data(df)
df = df.remove_rows(col_1)
df = df.collapse(col_1)

但是,如果我想像这样使用它:

df = df.remove_rows(col_1).collapse(col_1)

我会得到错误。现在,如果我从这些方法返回self,我可以将它们链接在一起,但是输出是Data对象而不是数据帧

例如,在Pandas中,您可以执行以下操作:

df = pd.read_csv('data.csv')
df = df.rename(columns={'col_1':'COL_1'}).drop(columns=['COL_1'])

而且

df = df.rename(columns={'col_1':'COL_1'})
df = df.drop(columns=['COL_1'])

我想了解如何创建方法,使我能够同时执行两个链操作,但如果需要,还可以单独使用它们来获取值。我做了一些研究,看起来你可以做一个或另一个,但如果你拿Pandas为例,你可以同时做这两个


Tags: columns数据对象方法selfpandasdfdata
1条回答
网友
1楼 · 发布于 2024-09-28 20:45:51

您需要在方法中使用self.df 像这样:

class Data:

    def __init__(self, df):
        self.df = df

    def remove_rows(self, col):
        self.df = (perform_some_operations)
        return self.df

    def collapse(self, cols):
        self.df = (perform_some_operations)
        return self.df

相关问题 更多 >