小编典典

如何根据第一列的内容拆分一个巨大的csv文件?

linux

  • 我有250MB以上的巨大的CSV文件要上传
  • 文件格式为group_id, application_id, reading,数据可能看起来像
1, a1, 0.1
1, a1, 0.2
1, a1, 0.4
1, a1, 0.3
1, a1, 0.0
1, a1, 0.9
2, b1, 0.1
2, b1, 0.2
2, b1, 0.4
2, b1, 0.3
2, b1, 0.0
2, b1, 0.9
.....
n, x, 0.3(lets say)
  • 我想基于划分文件group_id,因此输出应为n个文件,其中n=group_id

输出量

File 1

1, a1, 0.1
1, a1, 0.2
1, a1, 0.4
1, a1, 0.3
1, a1, 0.0
1, a1, 0.9

File2
2, b1, 0.1
2, b1, 0.2
2, b1, 0.4
2, b1, 0.3
2, b1, 0.0
2, b1, 0.9
.....

File n
n, x, 0.3(lets say)

我该如何有效地做到这一点?


阅读 353

收藏
2020-06-02

共1个答案

小编典典

如果文件已经按排序group_id,则可以执行以下操作:

import csv
from itertools import groupby

for key, rows in groupby(csv.reader(open("foo.csv")),
                         lambda row: row[0]):
    with open("%s.txt" % key, "w") as output:
        for row in rows:
            output.write(",".join(row) + "\n")
2020-06-02