Преобразование данных Excel в вложенные слова и списки - PullRequest
0 голосов
/ 26 сентября 2018

Это почти то же самое из моего вчерашнего вопроса.Но я считал само собой разумеющимся использование уникального списка значений для создания вложенной структуры dict & list.Но затем я пришел к вопросу о том, как построчно строить эту структуру dict & list (см. Структуру данных) из данных Excel.

Все файлы Excel (несколько файлов в папке) выглядят так:следующее:

Category    Subcategory    Name
Main Dish   Noodle         Tomato Noodle
Main Dish   Stir Fry       Chicken Rice
Main Dish   Soup           Beef Goulash
Drink       Wine           Bordeaux
Drink       Softdrink      Cola

Моя желаемая структура структуры dict & list:

data = [0:{'data':0, 'Category':[
                             {'name':'Main Dish', 'Subcategory':[
                                                   {'name':'Noodle', 'key':0, 'data':['key':1, 'title':'Tomato Noodle']},
                                                   {'name':'Stir Fry', 'key':1, 'data':['key':2, 'title':'Chicken Rice']},
                                                   {'name':'Soup', 'key':2, 'data':['key':3, 'title':'Beef Goulash']}]},
                              {'name':'Drink', 'Subcategory':[
                                                   {'name':'Wine', 'key':0, 'data':['key':1, 'title':'Bordeaux']},
                                                   {'name':'Softdrink', 'key':1, 'data':['key':2, 'title':'cola'}]}]},
    1:{'data':1, 'Category':.........#Same structure as dataset 0}]

Итак, для каждого файла Excel все нормально, просто выполните цикл и установите {'data':0, 'Category':[]}, {'data':1, 'Category':[]}и так далее.Ключом является то, что для каждого значения Category и Subcategory, Main Dish имеет три записи в Excel, но требует только 1 в структуре данных, а Drink имеет две записи в Excel, но только 1 в структуре данных.,Для каждой подкатегории, вложенной в список категорий, они следуют одному и тому же правилу, в категорию должны быть вложены только уникальные значения.Затем, каждый соответствующий Name блюд, они входят в структуру данных в зависимости от их категории и подкатегории.

Проблема в том, что я не могу найти лучший способ преобразовать данные в эту структуру данных.Кроме того, после столбца Name есть другие столбцы.Так что это довольно сложно.Я думал сначала извлечь уникальные значения из всего столбца категории и подкатегории, это упрощает процесс, но приводит к проблемам при заполнении соответствующих значений имени.Если я делаю это с построчным подходом, то разработка существующей подкатегории if или тест на выход из категории для сохранения уникальных значений, как-то сложно, исходя из моих текущих навыков программирования ...

Поэтому, что будетлучший подход для преобразования этого файла Excel в такую ​​структуру данных?Большое спасибо.

1 Ответ

0 голосов
/ 26 сентября 2018

Одним из способов может быть чтение файла Excel в кадр данных с использованием панд, а затем использовать этот превосходный ответ Панды преобразовывают DataFrame во вложенный Json

import pandas as pd
excel_file = 'path-to-your-excel.xls'

def fdrec(df):
    drec = dict()
    ncols = df.values.shape[1]
    for line in df.values:
        d = drec
        for j, col in enumerate(line[:-1]):
            if not col in d.keys():
                if j != ncols-2:
                    d[col] = {}
                    d = d[col]
                else:
                    d[col] = line[-1]
            else:
                if j!= ncols-2:
                    d = d[col]
    return drec

df = pd.read_excel(excel_file)

print(fdrec(df))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...