0

Hi i am pretty new to python. I developed the following class:

import pandas as pd
import os

class Class1:


    def __init__(self, path, cols = None, settings = {"sep" : ";", "encoding" : "unicode_escape", "header" : "infer", "decimal" :"."
    , "skiprows" : None,  "names" : None,  "skipfooter" : 0, "engine" : "python"}  ):

        self.raw = self._load_raw(path = path, s = settings, cols = cols)
        

    def _load_raw(self, path, s, cols = None):

        df = pd.read_csv(path, sep = s["sep"], encoding = s["encoding"], decimal = s["decimal"], skiprows = s["skiprows"], skipfooter = s["skipfooter"]
        ,  engine = s["engine"], header = s["header"], names = s["names"], usecols = cols)
        
        return df

Inside of the class is a function which reads a csv file into a pd.DataFrame. I am wondering if there is a smart way of developing the class without handing over such a setting dictionary to read the dataframe later on when creating an object. Lets suppose the csv file is much more easy and just need 1 argument e.g. "sep" and not all the other arguments, but then the class needs also to be able to read csv files which require more arguments. Is there a pythonic way to just hand over as many as required ?

for example 1 object just needs "sep", and another object neeeds all of the settings parameters defined in the docs of pd.read_csv for example, but they can be both created with the same class

coderxXx
  • 23
  • 5

0 Answers0