gpt4 book ai didi

python - (Python)如何按第一列对行进行分组,而不是按顺序排序?

转载 作者:太空宇宙 更新时间:2023-11-04 08:44:34 25 4
gpt4 key购买 nike

我有一个结构非常奇怪的 csv 文件。列字段由数字组成,行部分但不完全按第一个列字段分组。例如,如果列数据是 {number1, number2, number3},则文件将如下所示:

321, 12, 4932
321, 32, 4643
321, 95, 3921
...
143, 98, 2432
143, 28, 3910
...
832, 43, 2910
832, 54, 2190
...
572, 91, 8492
572, 92, 9302
572, 15, 3902
...
321, 93, 7281
321, 48, 6218
...
832, 78, 0148
832, 91, 7281

问题是我需要文件按第一列完美分组,所以上面的例子应该是:

321、12、4932
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
...

..同时,如上所示,第一列不应按顺序排序。我需要第一列的顺序相同(这听起来很奇怪,但由于它是部分分组的,因此在大范围内具有一定的顺序)。

解决这个问题最快的算法是什么?

最佳答案

将行排列成列表,这些列表存储在由第一列键入的字典中。如果您希望保留从原始电子表格中读取它们的顺序,请使用 OrderedDict。像这样(未经测试的代码)

from collections import OrderedDict
...
d = OrderedDict()

# open the csv file as reader

for row in reader:
key = row[0]
d.setdefault(key,[]).append(row)

并使用结果

for key,rowlist in d.items()
for row in rowlist:
# do whatever with row

关于python - (Python)如何按第一列对行进行分组,而不是按顺序排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41871564/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com