我有一个下面的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分组,并按日期升序排序。
^{pr2}$但是有一个限制。输入文件非常庞大,大约有2亿行。我尝试使用c,并将其存储在数据库中并编写sql查询。它很慢,不被接受。我听说python的这些操作非常强大。我刚开始玩Python的代码。我真的很感谢PYTHON专家帮助我获得上面提到的结果。
输出:
^{pr2}$当然,这是一个丑陋的黑客代码,只是为了向您展示如何在python中完成它。处理大数据流时,请使用generators和iterators,不要使用
file.readlines()
,just iterate。迭代器不会一次读取所有数据,而是在迭代时逐块读取,而不是更早。在如果您担心200m记录是否适合内存,请执行以下操作:
按学生id将记录分类到单独的“bucket”(如bucket sort)中
cat all_records.txt | grep 001 > stud_001.txt # do if for other students also
对每个bucket进行处理
合并
grep
只是一个例子。制作一个更漂亮的脚本(awk或python),它将按学生ID进行过滤,例如,用ID<;1000过滤所有内容,稍后使用1000<;ID<;2000等等。你可以安全地做这件事,因为你每个学生的记录是不连贯的。在相关问题 更多 >
编程相关推荐