首页 > 解决方案 > 方法链接和方法返回值

问题描述

这是关于 Python 类方法链接的一般问题。我有一个执行一些数据整理操作并返回方法的数据框的类。我正在尝试在创建数据框对象后使用方法链接方法,就像 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举个例子,你可以同时做。

标签: pythonpandasdataframechaining

解决方案


您需要在方法中使用 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

推荐阅读