Привет! Я бы хотел создать подкласс для фрейма данных pandas, но подкласс этого фрейма также будет наследовать от моего собственного пользовательского класса.Я хочу сделать это, потому что я хотел бы создать несколько подклассов данных, а также другие подклассы (которые не являются фреймами данных), которые будут иметь общие свойства и методы этого базового класса.
Для начала мой базовый класс:
class thing(object):
def __init__(self, item_location, name):
self.name = name
self.file = item_location
self.directory = os.path.join(*item_location.split(os.path.sep)[0:-1])
@property
def name(self):
return self._name
@name.setter
def name(self,val):
self._name = val
@property
def file(self):
return self._file
@file.setter
def file(self,val):
self._location = val
@property
def directory(self):
return self._directory
@directory.setter
def directory(self,val):
self._directory = val
А теперь один из моих подклассов, который унаследует от панд и прочего
class custom_dataframe(thing,pd.DataFrame):
def __init__(self, *args, **kwargs):
super(custom_dataframe,self).__init__(*args,**kwargs)
@property
def _constructor(self):
return custom_dataframe
Я просто пытаюсь сделать пробелфрейм данных, и только дать ему имя расположение файла
custom_dataframe('/foobar/foobar/foobar.html','name')
, и я получаю сообщение об ошибке
(я не могу опубликовать всю трассировку стека как ее на компьютере, которыйне подключен к интернету)
File "<stdin>", line 1, in <module>
File "<path to file with classes>", line x, in __init__
self.name = name
<a bunch of stuff going through pandas library>
File "<path to pandas generic.py>", line 4372, in __getattr__
return object.__getattribute__(self,name)
RecursionError: maximum recursion depth exceeded while calling a Python object
Я использую панды 0.23.4
edit:
изменено item_location.split(os.pathsep)[0:-1]
на *item_location.split(os.path.sep)[0:-1]