我有
class MySeries(pd.Series):
_metadata = [_md]
def __init__(self, *args, **kwargs):
md = kwargs.pop('md', None) #md is series
super(TimeSeries, self).__init__(*args, **kwargs)
if md is not None:
try:
self._md = self._md.append(md)
except AttributeError:
self._md = md
@property
def _constructor(self):
return MySeries
class MyFrame(pd.DataFrame):
@property
def _constructor(self):
return MyFrame
@property
def _constructor_sliced(self):
return MySeries
md_a = pd.Series(...some content...)
md_b = pd.Series(...some other content...)
a = MySeries(...some a content..., md=md_a)
b = MySeries(...some b content..., md=md_b)
蒂姆现在一切都很好:
a._md
给出md_a的内容。那么b。
不,我用:
创建我的MyFramef = MyFrame([a,b]).T
或
f = SecuritiesFrame()
f = pd.concat((f, a, b), axis=1)
现在我尝试获取元数据:
f.iloc[:,1]._md
我得到一个AttributeError:' MyFrame'对象没有属性' _md'因为元数据不会传播。
这是正常行为还是我在监督某事?我是否必须在我的DataFrame子类中单独跟踪元数据,这将非常不方便。