我创建了一个继承自 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/