我创建了一个继承自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类在切片时保留元数据?
答案 0 :(得分:0)
不确定它是否被认为是回答您自己的问题的好形式,但以下似乎有效:
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