【问题标题】:Class that returns a transformed dataframe返回转换后的数据框的类
【发布时间】:2021-09-29 14:38:43
【问题描述】:

我正在尝试创建一个类,该类采用 CSV 文件的路径和名称,将其转换为数据框,删除一些列,将另一列转换为日期时间,如代码中所示

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 缺乏亲密感表示歉意

【问题讨论】:

  • 首先分享使用这个类的代码
  • 您能否提供您如何调用该类以及一个虚拟 csv 以便我们可以运行代码?
  • return clean_unused_data() --> return self.clean_unused_data() - 不是吗?

标签: python pandas function class


【解决方案1】:

我认为错误是指调用 Pandas 中不存在的属性。据我所知,您将 pd.DataFrame 写为 pd.Dataframe。注意大写。

尝试以下方法:

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

【讨论】:

    【解决方案2】:

    您尝试删除的列之一可能实际上不在您的文件中。您可以处理异常或从数组中删除此列标签。

    【讨论】:

      猜你喜欢
      • 2014-07-15
      • 2017-02-19
      • 1970-01-01
      • 2018-05-11
      • 2020-02-16
      • 2020-10-19
      • 2020-10-03
      • 2021-09-10
      • 1970-01-01
      相关资源
      最近更新 更多