Класс, возвращающий преобразованный фрейм данных

#python #pandas #function #class

Вопрос:

Я пытаюсь создать класс, который использует путь и имя CSV-файла, преобразует его во фрейм данных, удаляет некоторые столбцы, преобразует другой в datetime, как в коде

 import os
from pathlib import Path
import pandas as pd
import datetime

class Plans:
    def __init__(self, file , path):
        self.file = file
        self.path = path
        self.df = pd.Dataframe()
        
    def get_dataframe(self):
        os.chdir(self.path)
        self.df = pd.read_csv(self.file, encoding="latin-1", low_memory=False, sep=';')
        if 'data' in df.columns:
            self.tipo = 'sales'
            self.df['data'] = pd.to_datetime(df['data'])
        return clean_unused_data()
    
    def clean_unused_data(self):        
        columns = ['id', 'docs', 'sequence','data_in','received', 'banc', 'return', 'status',  'return_cod', 
                   'bank_account_return',  'id_transcript', 'id_tx','type_order']
        for item in columns:
            del self.df[item]
        del columns[:]        
        return self.df

 

Когда я вызываю объект класса, он выдает ошибку, функция
clean_unused_data возвращает следующую ошибку:

 __getattr__ raise AttributeError(f"module 'pandas' has no attribute '{name}'")

 

Кроме того, я хотел бы выполнить больше преобразований фреймов данных в классе Plans. но так как этот первый провалился, я немного растерялся.

Спасибо за помощь, и я приношу извинения за отсутствие близости с python

Комментарии:

1. начните с общего доступа к коду, использующему этот класс

2. Не могли бы вы указать, как вы вызываете класс, а также фиктивный csv-файл, чтобы мы могли запустить код?

3. return clean_unused_data() —> > return self.clean_unused_data() — не так ли?

Ответ №1:

Я думаю, что ошибка относится к вызову атрибута, которого нет в Панд. Из того, что я вижу, вы написали pd.DataFrame как pd.Dataframe. Обратите внимание на заглавную букву.

Попробуйте выполнить следующие действия:

 def __init__(self, file , path):
    self.file = file
    self.path = path
    self.df = pd.DataFrame()
 

Ответ №2:

Вероятно, одной из колонок, которые вы пытаетесь удалить, на самом деле нет в вашем файле. Вы можете обработать исключение или удалить эту метку столбца из своего массива.