Метод хранения данных Python - PullRequest
0 голосов
/ 28 июня 2018

Я пытаюсь создать базу данных переменных в Python из большого файла CSV. Любая строка в файле CSV может быть однозначно идентифицирована из 4 столбцов.

Чтобы дать представление о структуре данных:

Supplier A
    Tariff RateA
        Region 1
            Payment Method 1
            Payment Method 2
        Region 2
            Payment Method 1

    Tariff Rate B
        Region 1
            Payment Method 1
            Payment Method 2
        Region 2
            Payment Method 1

Supplier B etc...   

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

Затем я создам словарь, связывающий каждую переменную в базе данных с соответствующим массивом.

Тогда я бы хотел получить эти массивы для сравнения / анализа и т. Д. *

Чтобы создать базу данных, я скопировал приведенный ниже код, который очень медленный, и в настоящее время я не уверен, будет ли создание пустого списка перед каждым циклом for иметь желаемый результат? Любой вклад или предложения будут с благодарностью.

supplier_log = []
for supplier in Tariff_Book.Supplier_Name:
    if supplier not in supplier_log:
        print("Supplier: " + supplier)
        supplier_log.append(supplier)
        tariff_log = []
        temp = Tariff_Book.query('Supplier_Name == @supplier')
        for tariff in temp.Tariff_Name:
            if tariff not in tariff_log:
                print("Tariff: " + tariff)
                tariff_log.append(tariff)
                region_log = []
                temp = Tariff_Book.query('Supplier_Name == @supplier & Tariff_Name == @tariff' )
                for region in temp.Region:
                    if region not in region_log:
                        print("Region: " + str(region))
                        region_log.append(region)
                        payment_method_log = []
                        temp = Tariff_Book.query('Supplier_Name == @supplier & Tariff_Name == @tariff & Region == @region')
                        for payment_method in temp.Payment_Method:
                            if payment_method not in payment_method_log:
                                print("Payment Method: " + payment_method)
                                payment_method_log.append(payment_method)
...