Python 创建具有返回数据帧方法的pandas.DataFrame包装器

Python 创建具有返回数据帧方法的pandas.DataFrame包装器,python,class,pandas,dataframe,Python,Class,Pandas,Dataframe,我试图创建一个类,它是pandas.DataFrame对象的包装器。在我为这个类编写了自己的方法之后,我希望pandas的方法也可以使用,但要明确地告诉我/用户他们的方法来自pandas。它会像这样工作 df = pd.DataFrame(np.random.randn(5,2)) md = myData(df) a = md.df # returns the original pandas.DataFrame "df" to a (equivalent of a=df print(md) #

我试图创建一个类,它是
pandas.DataFrame
对象的包装器。在我为这个类编写了自己的方法之后,我希望pandas的方法也可以使用,但要明确地告诉我/用户他们的方法来自pandas。它会像这样工作

df = pd.DataFrame(np.random.randn(5,2))
md = myData(df)

a = md.df # returns the original pandas.DataFrame "df" to a (equivalent of a=df
print(md) # prints as myData class
print(md.df) # prints just as print(df) would. Equiv to print(df)

md.mean() # mean as defined in myData class. Returns myData object
md.df.mean() # mean as defined in pandas. Returns dataframe object

md.std() # myData std
md.df.std() # pandas std
到目前为止,我所能做的都是失败的尝试。有一件事我真的认为它应该但不是

import pandas as _pd
class myData(_pd.DataFrame):
    """
    Attempt to create a myData object
    """
    def __init__(self, df, dic):
        df = df.copy()
        print(type(df))
        self.df = df
        self = df
它以
运行时错误退出:调用Python对象时超出了最大递归深度

编辑

以下代码以相同的错误结束

import pandas as _pd
class myData(_pd.DataFrame):
    """
    Attempt to create a myData object
    """
    def __init__(self, df, dic):
        df = df.copy()
        self.dic = dic
        super(myData, self).__init__(df)
        self.df = df
然而,如果我尝试

    def __init__(self, df, dic):
        df = df.copy()
        super(myData, self).__init__(df)
然后它工作了,但结果是一个myData对象,它实际上是一个数据帧,因为每个方法都已经是数据帧的方法


是否知道代码可能有什么问题,或者是否有办法改进此问题?

您不能使用
DataFrame
作为父项:

class myData(object):
    """
    Attempt to create a myData object
    """
    def __init__(self, df):
        self.df = df.copy()

df = pd.DataFrame(np.random.randn(100, 5), columns=list('ABCDE'))
mdf = myData(df)
mdf.df.describe()

您可以使用中讨论的
super()
访问父类的属性和方法。@albert谢谢您的提示。请看我的编辑