我有一个结构非常奇怪的csv文件。列字段由数字组成,行按第一列字段进行部分分组,但不完全分组。 例如,如果列数据是{number1,number2,number3},则文件将如下所示:
321,12,4932
321、32、4643
321、953921
…
143、98、2432
143、28、3910
…
832、43、2910
832、542190
…
572、91、8492
572、92、9302
572、15、3902
…
321、937281
321、48、6218
…
832,78,0148
832,91,7281
问题是,我需要按照第一列对文件进行完美分组,因此上面的示例应该是:
321、124932
321、32、4643
321、95、3921
321、93、7281
321、48、6218
…
143、98、2432
143、28、3910
…
832、43、2910
832、54、2190
832、78、0148
832、91、7281
…
572、91、8492
572、92、9302
572、15、3902
... 在
。。同时,正如上面所示,第一列不应该按顺序排序。我需要第一列的顺序是相同的(这听起来可能很奇怪,但是由于它是部分分组的,所以在很大程度上它有一定的顺序)。在
解决这个问题最快的算法是什么?在
将行排列成列表,这些列表存储在由第一列键入的dict中。如果您希望保留从原始电子表格读取它们的顺序,请使用OrderedDict。类似这样的东西(未测试的代码)
并使用结果
^{pr2}$您可以尝试硬编码,但对于Python中的CSV文件,我建议使用Pandas。Pandas是Python的
import
,专门为CSV文件创建。您可以相当简单地对数据集进行排序、分组、创建等。您还可以读取CSV文件并创建自定义列和行。例如:我将留下一些文档链接,您可以在那里找到最适合您在Python中实现的函数。 Basic Tutorial .Scroll to GroupingTutorial with Examples
最简单和最快的方法是使用熊猫为您的CSV
在分析文件时,可以使用列表和字典,使用字典按第一行对行进行分组,使用列表保留第一行的顺序:
然后,只需解析列表并从字典中检索数据,就可以打印它们:
^{pr2}$相关问题 更多 >
编程相关推荐