1

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

これを修正するにはどうすればよいですか?

4

0 に答える 0