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

时间:2018-03-13 01:52:40

标签: python python-3.x pandas

我是Python 3的新手,来自R。

我有一个非常大的时间序列文件(10gb),跨越6个月。它是一个csv文件,其中每行包含6个字段:Date,Time,Data1,Data2,Data3,Data4。 "数据"字段是数字。我想遍历文件并创建&编写仅包含一天数据的单个文件。只有日期字段突然改变这一事实才能知道各个日期。即,他们不包括周末,某些假期,以及由于不可预见事件导致的随机关闭,因此唯一日期的向量不是确定性的。此外,每天的行数也是可变且未知的。

我设想将每一行读入缓冲区并将日期与上一日期进行比较。

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

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

2 个答案:

答案 0 :(得分:2)

{ "errors": [ ... ] } 在这里不是一个好选择,因为它会读取enire CSV。标准pandas模块逐行迭代,更适合您。编写嵌套的csv循环以读取每一行并写入非常简单,但如果您使用迭代器来缩短代码,则会获得额外的分数。

for很有意思,因为它会为您实现新日期的检查。在传递迭代器之后,它返回迭代器,只要日期之类的键发生变化就会停止。这些迭代器可以由csv编写者使用。

itertools.groupby

答案 1 :(得分:0)

我被打开了(......)实际上得到一条线。我在打开(...)之后做了一个单独的readline(...),因此无意中推进了迭代器并得到了不好的结果。

csv写有一个小问题,我将在新问题上发布。