#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:
Вероятно, одной из колонок, которые вы пытаетесь удалить, на самом деле нет в вашем файле. Вы можете обработать исключение или удалить эту метку столбца из своего массива.