Моя цель - создать объект, который ведет себя так же, как Pandas DataFrame, но с несколькими дополнительными моими собственными методами поверх него.Насколько я понимаю, одним из подходов было бы расширение класса, который я сначала попытался сделать следующим образом:
class CustomDF(pd.DataFrame):
def __init__(self, filename):
self = pd.read_csv(filename)
Но я получаю ошибки при попытке просмотра этого объекта, говоря: 'CustomDF' object has no attribute '_data'
.
Моя вторая итерация заключалась в том, чтобы вместо этого не наследовать объект, а импортировать его в виде DataFrame в один из атрибутов объекта и иметь методы для его обхода, например:
class CustomDF():
def __init__(self, filename):
self.df = pd.read_csv(filename)
def custom_method_1(self,a,b,...):
...
def custom_method_2(self,a,b,...):
...
Это нормально, за исключением того, что для всех пользовательских методов мне сначала нужно получить доступ к атрибуту self.df
, чтобы что-то с ним сделать, но я бы предпочел, чтобы мой пользовательский кадр данных был просто self
.
Есть лиспособ, которым это может быть сделано?Или этот подход не идеален в любом случае?