Проблема с описанием через классы Python

Подскажите, пожалуйста, в чем нарушена логика в попытке описать код через классы?

Есть код:

dff = pd.read_pickle("./output.pkl")
types = dff.dtypes
types.to_excel('types.xlsx')

Пробую описать через классы:

class Reader:
    def __init__(self, file):  
        self.file = file
            
    def read_pkl(self):
        self.df = pd.read_pickle(self.file)
        
dff = Reader("./output.pkl")
dff.read_pkl()
dff

На выходе ожидал получить записанный датафрейм, а получаю объект класса, с которым вроде бы ничего не сделаешь. (<main.Reader at 0x2406f266850>)

Что поменять, чтобы данные записались в датафрейм?


Ответы (1 шт):

Автор решения: Алексей Р

Поскольку вы прочитали фрейм в свойство df экземпляра класса Reader, то печатать его нужно как dff.df:

import pandas as pd

class Reader:
    def __init__(self, file):
        self.file = file

    def read_pkl(self):
        self.df = pd.read_pickle(self.file)

    def write_excel(self, ExcelFileName): # + метод записи в Excel
        self.df.to_excel(ExcelFileName)

# тестовая запись в файл
srcdf = pd.DataFrame({'smth': [1, 2, 3, 4, 5]})
srcdf.to_pickle('output.pkl')

dff = Reader("output.pkl")
dff.read_pkl()
print(dff.df)
dff.write_excel('types.xlsx')

Вывод:

   smth
0     1
1     2
2     3
3     4
4     5

+ файл Excel
→ Ссылка