Предложения о том, как проанализировать CSV с узлами дерева - PullRequest
2 голосов
/ 13 мая 2019

Я потратил слишком много времени, работая над проблемой, и мой коллега предложил мне опубликовать здесь вопрос с предложениями по проблеме узла / листа дерева. Я работаю в python libtree и pandas. В настоящее время у меня есть один файл CSV с более чем 450 000 конечных узлов, по одному листу на строку. Все родительские элементы находятся в одном столбце в формате «Родитель ->» на каждого родителя над листом. Не уверен, что это обычный формат, но его легко разобрать.

Примером родительского столбца для конечного узла на 4 слоя будет «Узел A -> Узел AA -> Узел AAB»

Разрешение на:

Root
 |
 +---> Node A
        |
        +---> Node AA
               |
               +---> Node AAB
                      |
                      +---> Leaf

Самое главное, моей команде нужно импортировать эти данные в сторонний WebGUI. Система WebGUI имеет ограниченную функцию импорта CSV и позволяет перемещать родительские папки с помощью перетаскивания после импорта. Он также имеет следующие ограничения.

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

2) Каждый импорт создаст новое дерево вне корня, без слияния. Если он существует, импорт создаст новый узел и добавит сгенерированный UUID к имени нового узла.

Пример Если вы попытаетесь импортировать новый CSV-файл с конечным узлом «Узел A -> Узел AA -> Узел AAC», вы увидите:

 Root
     |
     +---> Node A
     |      |
     |      +---> Node AA
     |             |
     |             +---> Node AAB
     |                    |
     |                    +---> Leaf
     +---> Node A-d8c0b6b8-728a-11e9-8848-1681be663d3e
            |
            +---> Node AA
                   |
                   +---> Node AAC
                          |
                          +---> Leaf  

Лучшее решение для этого, которое я могу придумать для обработки нашего большого файла CVS:

  • Разбейте файл на сегменты, начиная с самых дальних веток вниз по дереву, идя назад, пока у меня не будет 7999 листовых узлов.

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

  • С помощью Intern перетащите папки с помощью веб-интерфейса в правильные места.

Я упрямый администратор, который немного работает со скриптами, и я нахожу это немного выше моего уровня опыта. Пожалуйста, дайте мне знать, если я упускаю что-то очевидное. Я хотел бы решить эту проблему в Python 2.7x или 3.x, чтобы проверить на работе.

Первоначально я разместил это на канале Reddit / r / LearningPython, так что вы, возможно, видели этот вопрос раньше. Пожалуйста, дайте мне знать, если есть лучший район, сайт.
Спасибо за любые предложения или помощь.

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