我有一个CSV文件,其中包含3列CSV数据"嵌套"在其中。我想将这些CSV列的内容拆分为每个CSV项目创建一个新行,为每个项目添加一个序列号(对应于CSV列中序列中项目的顺序),然后添加一个对应的ItemID编号,对应于它来自的CSV列。我需要看看下面的Table1,看起来像Table2。
表1(原始CSV文件)。第一行是列名:
StoreID,Date,StoreName,City,State,Category1CSV,Category2CSV,Category3CSV
1051,2/16/2014,Easton,Columbus,OH,"Flour,Yeast,Baking Powder","Milk,Water,Oil","Cinnamon,Sugar"
1425,1/14/2014,Crocker Park,Westlake,OH,"Baking Powder,Yeast,Four","Oil,Milk,Water"
表2(拆分CSV列内容后)。第一行是列名:
StoreID,Date,StoreName,City,State,ItemName,ItemRank,ItemCategory
1051,2/16/2014,Easton,Columbus,OH,Flour,1,1
1051,2/16/2014,Easton,Columbus,OH,Yeast,2,1
1051,2/16/2014,Easton,Columbus,OH,Baking Powder,3,1
1051,2/16/2014,Easton,Columbus,OH,Milk,4,2
1051,2/16/2014,Easton,Columbus,OH,Water,5,2
1051,2/16/2014,Easton,Columbus,OH,Oil,6,2
1051,2/16/2014,Easton,Columbus,OH,Cinnamon,7,3
1051,2/16/2014,Easton,Columbus,OH,Sugar,8,3
1425,1/14/2014,Crocker Park,Westlake,OH,Baking Powder,1,1
1425,1/14/2014,Crocker Park,Westlake,OH,Yeast,2,1
1425,1/14/2014,Crocker Park,Westlake,OH,Flour,3,1
1425,1/14/2014,Crocker Park,Westlake,OH,Oil,4,2
1425,1/14/2014,Crocker Park,Westlake,OH,Milk,5,2
1425,1/14/2014,Crocker Park,Westlake,OH,Water,6,2
标记为Category1CSV,Category2CSV和Category3CSV内容的表1列映射到表2列:ItemName,ItemRank,ItemCategory,其中:
最重要的方面是在CSV列中拆分新行时维护项目的顺序。例如,StoreID 1051具有"面粉,酵母,发酵粉"的Category1CSV含量。这些将映射到ItemName,ItemRank(序列号)和ItemCategory列,使得ItemName = Flour,它的ItemRank = 1,以及ItemCategory = 1.这将是表2中的第一行。 row将是ItemName = Yeast,它的ItemRank = 2,而ItemCategory = 1,依此类推,直到你最终看到上面的表2。此外,您会注意到ItemRank编号从Category1CSV列的内容开始,然后继续到Category2CSV,最后是Category3CSV。
并非原始CSV文件中的所有行都包含所有3个CSV列中的项目。例如,商店1051在所有3个类别中都有商品,但商店1425仅包含类别1和2中的商品。其他商店可能只有1个类别中的商品。在处理文件时,有些逻辑需要考虑到这一点。
我的CSV文件包含几千行。生成的文件可能有数万行。
我该怎么做?
答案 0 :(得分:0)
指出正确的方向:
正如丹尼尔所指出的那样,我担心你在问题的解释性段落中对你的担忧并不完全清楚,但我有信心,如果你花一些时间玩游戏使用该模块,您会发现您可以按照您的希望使其工作。