我试图创建一个包含pandas.DataFrame
个对象的包。在我为这堂课写自己的方法后,我想要大熊猫'方法也可用,但是以明确告诉我/用户他们来自熊猫的方式。它会像这样工作
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
它以RuntimeError: maximum recursion depth exceeded while calling a Python object
退出。
修改
以下代码以相同的错误结束。
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,因为每个方法都是DataFrames的方法。
知道代码可能出现什么问题,或者是否有办法让这更好?