Python 在对DataFrame的子类进行切片时传递元数据

Python 在对DataFrame的子类进行切片时传递元数据,python,pandas,Python,Pandas,我创建了一个从pandas.DataFrame继承的类。在此类中,元数据被添加(不是列,而是类实例): 如果对类进行切片,则会出现类型错误,因为\uuuu init\uuuu缺少必需的参数元数据。 我试图修改\u构造函数以传递元数据,但没有成功。 我还尝试将元数据作为附加属性添加到类中(\u metadata'=['metadata']),如下所述:,但没有效果 如何让类MeasurementPoint在切片时保留元数据?不确定回答您自己的问题是否被认为是一种好的形式,但以下方法似乎有效: cl

我创建了一个从pandas.DataFrame继承的类。在此类中,元数据被添加(不是列,而是类实例):

如果对类进行切片,则会出现类型错误,因为
\uuuu init\uuuu
缺少必需的参数
元数据
。 我试图修改
\u构造函数
以传递
元数据
,但没有成功。 我还尝试将
元数据
作为附加属性添加到类中(
\u metadata'=['metadata']
),如下所述:,但没有效果


如何让类MeasurementPoint在切片时保留元数据?

不确定回答您自己的问题是否被认为是一种好的形式,但以下方法似乎有效:

class MeasurementPoint(pandas.DataFrame):

    _metadata = ['metadata']

    def __init__(self, *args, **kwargs):
        metadata = kwargs.pop('metadata', {})
        super(MeasurementPoint, self).__init__(*args, **kwargs)
        self.metadata = metadata

    @property
    def _constructor(self):
        return MeasurementPoint
正如pandas的内部文档所示,仔细查看geopandas软件包,它将为您指明正确的方向。
class MeasurementPoint(pandas.DataFrame):

    _metadata = ['metadata']

    def __init__(self, *args, **kwargs):
        metadata = kwargs.pop('metadata', {})
        super(MeasurementPoint, self).__init__(*args, **kwargs)
        self.metadata = metadata

    @property
    def _constructor(self):
        return MeasurementPoint