我花了太多的时间在一个问题上,我的同事建议我在这里发帖,询问关于树节点/叶问题的建议。我在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频道,因此您可能已经看到过这个问题。请让我知道是否有更好的地区,网站。
â
谢谢你的建议和帮助。