Я пытаюсь создать панда Dataframe как класс с некоторыми дополнительными конструкторами:Pythonic способа расширения базового класса
class ExtendedDataFrame(DataFrame):
def __init__(self):
super(ExtendedDataFrame, self).__init__() # without this I get a pandas error
@classmethod
def contructor1(cls, filename):
"Create DataFrame from file"
df = pd.read_csv(filename) # returns a DataFrame
df.__class__ = cls
return df
# more methods extending Dataframe ...
Так что теперь я могу сделать:
ExtendedDataFrame.constructor1('table_xx.txt') # returns an ExtendedDataFrame instance
Что я хотел бы должен иметь возможность получить экземпляр моего класса таблицы таким образом:
ExtendedDataFrame('table_xx.txt')
Каков рекомендуемый способ для этого?
Другими словами, я пытаюсь сделать ExtendedDataFrame
класс, но методы некоторых панд как read_csv
возвратной DataFrame
, и я хочу, чтобы иметь ExtendedDataFrame
вернулся.
Что именно вы пытаетесь достичь? Почему бы просто не сказать, что 'Table = pd.read_csv' и использовать это? –
Я планирую использовать pd.read_csv или pd.read_fwf в зависимости от аргументов (типа имени файла), переданных во время построения, я также планирую расширить класс другими методами. – elyase
Если речь идет только о различии имени файла, сделайте это извне или определите простую функцию, которая возвращает фрейм данных. Для чего вам нужен класс «Таблица», за исключением различия между форматами входных данных? –