私が定義したサブクラスを含むDataFrame
を作成したいと思います。ただし、サブクラスはDataFrame
に割り当てられている場合はSeries
から削除されているようです。ここでPython pandas:SeriesサブクラスをDataFrame列として保存
は、問題を説明するためにおもちゃの例です:
>>> import pandas as pd
>>> class SeriesSubclass(pd.Series):
... @property
... def _constructor(self):
... return SeriesSubclass
... def times_two(self):
... """Method I need in this subclass."""
... return self * 2
...
>>> subclass = SeriesSubclass([7, 8, 9])
>>> type(subclass) # fine
<class '__main__.SeriesSubclass'>
>>> subclass.times_two() # fine
0 14
1 16
2 18
dtype: int64
>>>
>>> data = pd.DataFrame([[1, 2, 3], [4, 5, 6]], columns=list('ABC'))
>>> data['D'] = subclass
>>> type(data['D']) # not good
<class 'pandas.core.series.Series'>
>>> data['D'].times_two() # not good
Traceback (most recent call last):
...
AttributeError: 'Series' object has no attribute 'times_two'
私はこの問題は以前#1713提起されている可能性が見てきたが、私は、実際のソリューションを識別することはできません。そのような巨大なライブラリであり、さまざまなPR、docバージョンなどに従うのが難しいです。そして、サブクラス化の仕組みは、私が(this seems to be it)を伝える限りよく説明されていないようです。