代码之家  ›  专栏  ›  技术社区  ›  JustBroken

如何解析树节点csv的建议

  •  1
  • JustBroken  · 技术社区  · 7 年前

    我花了太多的时间在一个问题上,我的同事建议我在这里发帖,询问关于树节点/叶问题的建议。我在python libtree和pandas工作。目前,我有一个CSV文件,有超过450000个叶节点,每行一个叶。父项全部位于叶上方的每个父项的一列中,格式为“Parent-->”。不确定这是否是一种通用格式,但很容易解析。

    “node a--gt;node AA-->node AAB”是一个向下4层的叶节点的父列示例

    决心:

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

    最关键的是,我的团队需要将这些数据导入到非站点WebGUI中。WebGUI系统具有有限的CSV导入功能,允许我们在导入后通过拖放来移动父文件夹。它也有以下限制。

    1)每个CSV文件的叶节点数少于8000个,因此需要将CSV细分为多个段。

    –2)每个导入都将在根目录下创建一个新树,不合并。如果存在,导入将创建一个新节点并将生成的子节点追加到新的节点名。

    示例如果尝试导入叶节点为“node a--gt;node AA--gt;node AAC”的新CSV文件,您将看到:

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

    到目前为止,为了处理我们的大型CVS文件,我能想出的最佳解决方案是:

    • 把文件分成几段,从树上最远的分支开始向后移动,直到有7999个叶节点。

    • 写出一个新的CVS文件,该文件的顶部节点有一个易于处理的名称,用于标识应该导入到的父节点。

    • 让实习生使用WebGUI将文件夹拖放到正确的位置。

    我是一个固执的管理者,做一些脚本猴子的工作,我发现这有点超出我的经验水平。如果我遗漏了一些明显的东西,请告诉我。我想在python 2.7x或3.x中解决这个问题,以便在工作时签入。

    我最初将此发布到Reddit/r/LearningPython频道,因此您可能已经看到过这个问题。请让我知道是否有更好的地区,网站。
    ​ 谢谢你的建议和帮助。

    0 回复  |  直到 7 年前