Pythonic扩展基类的方法

时间:2013-07-17 23:20:36

标签: python class pandas

我正在尝试使用一些添加的构造函数创建一个像类一样的pandas Dataframe:

class ExtendedDataFrame(DataFrame):
    def __init__(self):
        super(ExtendedDataFrame, self).__init__()   # without this I get a pandas error

    @classmethod    
    def contructor1(cls, filename):
        "Create DataFrame from file"
        df = pd.read_csv(filename) # returns a DataFrame
        df.__class__ = cls
        return df

    # more methods extending Dataframe ...

所以现在我能够做到:

ExtendedDataFrame.constructor1('table_xx.txt')    # returns an ExtendedDataFrame instance

我想要的是能够以这种方式获取我的Table类的实例:

ExtendedDataFrame('table_xx.txt')

建议的方法是什么?

换句话说,我正在尝试制作ExtendedDataFrame课程,但是像read_csv这样的一些大熊猫的方法会返回DataFrame,我希望返回ExtendedDataFrame

1 个答案:

答案 0 :(得分:0)

__init__方法中使用参数扩展,调查提供的参数,如果找到一个字符串参数,则在内部执行Table.constructor1('string')

另一方面,更仔细地看待你的问题,我想知道你想在这里实现什么。到目前为止,您的constructor1类方法没有意义。您希望实现哪种功能,以便df = pd.read_csv(...)对您来说还不够?