Python 将大型(10gb)时间序列CSV文件处理为每日文件

Python 将大型(10gb)时间序列CSV文件处理为每日文件,python,python-3.x,pandas,Python,Python 3.x,Pandas,我是Python3的新手,来自R 我有一个非常大的时间序列文件(10gb),跨越6个月。它是一个csv文件,其中每行包含6个字段:日期、时间、数据1、数据2、数据3、数据4。“数据”字段是数字字段。我希望遍历该文件并创建和编写仅包含一天数据的单个文件。只有通过日期字段突然更改的事实才能知道各个日期。也就是说,它们不包括周末、某些假日以及由于不可预见事件而导致的随机关闭,因此唯一日期的向量是不确定的。此外,每天的线路数量也是可变的和未知的 我设想将每一行读入缓冲区,并将日期与前一个日期进行比较 如

我是Python3的新手,来自R

我有一个非常大的时间序列文件(10gb),跨越6个月。它是一个csv文件,其中每行包含6个字段:日期、时间、数据1、数据2、数据3、数据4。“数据”字段是数字字段。我希望遍历该文件并创建和编写仅包含一天数据的单个文件。只有通过日期字段突然更改的事实才能知道各个日期。也就是说,它们不包括周末、某些假日以及由于不可预见事件而导致的随机关闭,因此唯一日期的向量是不确定的。此外,每天的线路数量也是可变的和未知的

我设想将每一行读入缓冲区,并将日期与前一个日期进行比较

如果下一个日期=上一个日期,我会将该行附加到缓冲区。我重复这一点直到下次约会上一个日期,此时我将缓冲区写入一个只包含当天数据的新csv文件(00:00:00至23:59:59)


我在添加新的数据帧行时遇到了麻烦,而在列表中使用readline对我来说太麻烦了。寻找Pythonic建议。

pandas
在这里不是一个好选择,因为它读取enire CSV。标准的
csv
模块逐行迭代,将更好地为您服务。为循环编写嵌套的
以读取每一行并写入,这非常简单,但如果您利用迭代器来编写较短的代码,则会得到额外的分数

itertools.groupby
很有趣,因为它为您实现了对新日期的检查。在交给迭代器之后,它返回迭代器,每当日期之类的键发生变化时,迭代器就会停止。csv编写器可以使用这些迭代器

import csv
import itertools

with open('test_in.csv') as in_fp:
    reader = csv.reader(in_fp)
    for date, row_iter in itertools.groupby(reader, key=lambda row: row[0]):
        out_filename = date.replace('/','-') + '.csv' # todo: name your output file
        with open(out_filename, 'w') as out_fp:
            csv.writer(out_fp).writerows(row_iter)

我在那个开阔的地方被甩了(…)实际上我得到了一条线。我在open(…)之后做了一个单独的readline(…),因此无意中推进了迭代器并得到了糟糕的结果


有一个小问题,CSV写,我会张贴在新的问题。

可能的副本你可能想考虑使用一些类似CSVKIT可能的重复诚实,但是。代码>grep'date'file.csv>small file.csv
比编写任何代码都要好,如果您只需过滤行中的值