Проблема с описанием через классы 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