对数据帧使用 oop

using oop for dataframes

我想重构我的代码并尝试创建用于基本数据帧操作的 OOP 设置。 这在更大的上下文中可能没有意义,但我正在努力更好地掌握 OOP。 我尝试了重命名列功能,但它不适用于我创建的实例 (m1)。

df1 = pd.read_sql(query, conn)
class DataframeOperations():
    def __init__(self, df):
    self.df = df

    def rename_column(self, name:'string', name_adj:'string'):
        self.df.rename(columns = {name, name_adj}, inplace=True)
        return self.df

m1 = DataframeOperations(df1)
print(type(m1))

输出到此为止

<class 'main.DataframeOperations'>

m1.rename_column('col1','col2')

我在 运行 这个函数时得到以下错误:

TypeError: 'set' object is not callable

在您定义集合而不是字典的列中,试试这个:

df1 = pd.DataFrame({'a':[1,3,4]})

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

    def rename_column(self, name:'string', name_adj:'string'):
        replace_dict = {name: name_adj}
        self.df.rename(columns =replace_dict , inplace=True)
        return self.df

m1 = DataframeOperations(df1)
print(type(m1))

m1.rename_column('a','b')

但总的来说,特别是针对 OOP,您想要的是 DataframeOperations 继承自 pd.DataFrame:

class DataframeOperations(pd.DataFrame):

    def rename_column(self, name:'string', name_adj:'string'):
        replace_dict = {name: name_adj}
        self.rename(columns =replace_dict , inplace=True)
        return self

df1 = DataframeOperations({'a':[1,3,4]})
df1.rename_column('a','b')