pandas DataFrame にユニットを追加しようとしていて、シリーズが含まれていますが、スライスするとinitが呼び出されないようで、すべてのセットアップが失われます。
class QSeries(pd.Series):
_metadata = ["unit", "descriptor"]
@property
def _constructor(self):
return QSeries
@property
def _constructor_expanddim(self):
return QDataFrame
class QDataFrame(pd.DataFrame):
# normal properties
_metadata = ["units"]
def __init__(self, *args, units=None, **kwargs):
super(QDataFrame, self).__init__(*args, **kwargs)
if units is None:
self.units = {}
else:
self.units = {key:value for key, value in units.items() if key in self.columns}
for col in self.columns:
if col in self.units:
self[col].unit = self.units[col]
@property
def _constructor(self):
return QDataFrame
@property
def _constructor_sliced(self):
return QSeries
https://gist.github.com/wkerzendorf/52459080be83c7c382bac11ef9ac3195
test = QDataFrame(index=np.arange(10), columns=['x', 'y', 'z'], data=1., units={'x':u.erg, 'y':u.s, 'z':u.cm})
test.x.unit
output -> erg
test2 = test[['x', 'y']]
test2.x.unit
AttributeError
これを修正するにはどうすればよいですか?