init с CSV-файлом вместо значений c - PullRequest
0 голосов
/ 06 марта 2020

Я совершенно новичок в python ... и я бы хотел изменить подход c для чтения входных параметров на более динамический c, считывая входные параметры из .csv-файла вместо. Я изменил его с _old на _new следующим образом ... но это не сработало! Было бы неплохо, если бы кто-то мог мне помочь.

physics_old.py

class Box(object):

    def __init__(self, depth=5, width=10, height=3, density=7):

        # Dimensions
        self.depth = depth 
        self.width = width 
        self.height = height 
        self.density = density

sim_old.py

# Initialise instance, empty brackets for default see physics_old.py
Cuboid = Object(depth=6, width=12, height=2, density=7.5)

Я хочу изменить этот подход c к более динамический c один, считывающий входные параметры из .csv-файла. Я изменил его на следующее ...

physics_new.py

class Box(object):

    def __init__(self, box_data):

        labels = ['depth', 'width', 'height', 'density']

        # Import csv file
        data = pd.read_csv(box_data, skiprows=1, sep=';', index_col=False, names=labels)

        # Dimensions
        self.depth = data['depth'] 
        self.width = data['width']
        self.height = data['height']
        self.density = data['density']

sim_new.py

# Initialise instance, empty brackets for default see physics_new.py
Cuboid = Object(data)

1 Ответ

0 голосов
/ 06 марта 2020

Попробуйте изменить код следующим образом:

class Box(object):

    def __init__(self, box_data):

        labels = ['depth', 'width', 'height', 'density']

        # Import csv file
        data = pd.read_csv(box_data, skiprows=1, sep=';', index_col=False, names=labels)

        for _,row in data.iterrows():

           # Dimensions
           self.depth = row['depth'] 
           self.width = row['width']
           self.height = row['height']
           self.density = row['density']

Но у вас останется значение последней строки в self.*variables*. изменить поток кода

...