在派生Pandas DataFram中使用构造函数设置数据

2024-04-29 14:05:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图在派生Pandas数据帧的构造函数中自动读入数据。数据帧方法没有返回派生类类型的问题可以通过更改\u构造函数属性来解决。在

import pandas as pd

class Derived(pd.DataFrame):
    @property
    def _constructor(self):
        return Derived
    def __init__(self, data=None, index=None, columns=None, dtype=None,
                 copy=False):
        print('Constructor')
        super(Derived, self).__init__(index=range(2), columns=['a', 'b'])
        data = [[1, 2], [3, 4]]
        self.ix[:, ['a', 'b']] = data

但是,实例对象中的切片会重新调用构造函数并重新设置数据。在

^{pr2}$

我可以用以下方法解决:

import pandas as pd

class Derived(pd.DataFrame):
    @property
    def _constructor(self):
        return Derived
    def __init__(self, data=None, index=None, columns=None, dtype=None,
                 copy=False):
        print('Constructor')
        if isinstance(data, pd.core.internals.BlockManager):
            super(Derived, self).__init__(data=data, index=index, 
                                          columns=columns, dtype=dtype,
                                          copy=copy)
        else:
            super(Derived, self).__init__(index=range(2), columns=['a', 'b'])
            data = [[1, 2], [3, 4]]
            self.ix[:, ['a', 'b']] = data

我觉得这很脏。在

我想知道在Pandas数据帧初始化期间是否有更优雅的方法来设置数据?另一种模式会更好吗?在


Tags: columns数据方法selfnonepandasdataindex