问题描述
我想将pandas Dataframe和Series子类化,以添加变量单位作为自定义属性。此属性应附加到我的子类系列中,但也可用于我的子类数据框的列。下面的一些陈述或多或少表明了我的想法。
df = SubclassedDataframe({'length': [1,2,3],'time': [4,5,6],'mass': [7,8,9]})
df[['length']].units = 'm'
df[['time']].units = 's'
df[['mass']].units = 'kg'
df[['length']] # 'm'
df.units # ['m','s','kg']
我尝试了以下方法,但这不起作用。我认为这是因为数据框的列未在内部存储为Series。我将如何实现所需的行为?
class SubclassedSeries(pd.Series):
_metadata = ['_units']
@property
def _constructor(self):
return SubclassedSeries
@property
def _constructor_expanddim(self):
return SubclassedDataframe
@property
def units(self):
if not hasattr(self,'_units'):
self._units = None
return self._units
@units.setter
def units(self,units):
self._units = units
class SubclassedDataframe(pd.DataFrame):
@property
def _constructor(self):
return SubclassedDataframe
@property
def _constructor_sliced(self):
return SubclassedSeries
@property
def units(self):
return [col.units for name,col in self.iteritems()]
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)