【发布时间】:2013-05-17 21:46:39
【问题描述】:
我有一个以下 csv 文件(每行是动态字符数,但列是固定的...希望我说得通)
**001** Math **02/20/2013** A
**001** Literature **03/02/2013** B
**002** Biology **01/01/2013** A
**003** Biology **04/08/2013** A
**001** Biology **05/01/2013** B
**002** Math **03/10/2013** C
我正在尝试将结果以以下格式保存到另一个 csv 文件中,该文件按学生 ID 分组并按日期升序排列。
001,#Math;A;02/20/2013#Biology;B;05/01/2013#Literature;B;03/02/2013
002,#Biology;A;01/01/2013#Math;C;03/10/2013
003,#Biology;A;04/08/2013
虽然有一个限制。 输入文件很大,大约有 2 亿行。 我尝试使用 c# 并将其存储在数据库中并编写 sql 查询。它非常缓慢且不被接受。谷歌搜索后,我听说 python 对于这些操作非常强大。我是 Python 新手,开始玩代码。我非常感谢 PYTHON 专家帮助我获得上述结果。
【问题讨论】:
-
文件中的每一行是否使用固定数量的字符?因为它可能有助于提供更快的解决方案。
-
@Markon hmmmm 我不这么认为
-
好的。所以基本上每一行都有动态数量的字符。您应该重新编辑您的问题,因为 CSV 似乎具有固定的结构。
-
已编辑:(每行是动态字符数,但列是固定的......希望我说得通)
-
我认为您的数据库方法是正确的...使用数据库的批量导入来获取数据,创建一个视图以适当的键顺序返回它,然后使用 itertools.groupby 聚合结果。或者,使用 MapReduce 查看数据库并让它完成繁重的工作
标签: python python-2.7