python - 切片 DataFrame 的子类时传递元数据

标签 python pandas

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

class MeasurementPoint(pandas.DataFrame):

    def __init__(self, data, metadata):
        super(MeasurementPoint, self).__init__(data)
        self.metadata = metadata

    # in order to return MeasurementPoint instead of DataFrame, define _constructor
    def _constructor(self):
        return MeasurementPoint

如果我对类进行切片,我会得到一个 TypeError,因为 __init__ 缺少必需的参数 metadata。 我试图修改 _constructor 以传递 metadata,但没有成功。 我还尝试将 metadata 添加到类中作为附加属性 (_metadata' = ['metadata']),如下所述:http://pandas.pydata.org/pandas-docs/stable/internals.html ,但无济于事。

如何让 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

关于python - 切片 DataFrame 的子类时传递元数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42970473/

相关文章:

python - 字符串格式 : % vs. .format 与 f-string 文字

python - pip install tensorflow-gpu 在 python 3.5 中安装

python - Tensorflow-GPU 在训练期间保存检查点时卡住了 - 也没有使用整个 GPU,不知道为什么

python - Pandas 群体内的变量转移

python - ' | ' python 集合对象之间的运算符

python - 使用分类变量解包时间数据

python - 在 Eclipse 中调试 Python 扩展

python - 无法从 request.session 中通过键获取值;我用Django

python - 在 Pandas 中绘制(并保存)多个数据帧中的特定单元格

python - 如何从数据框中获取每个月的最后一天并从数据框中删除其余日期?