在文件中转置数据网格的最佳方法

时间:2009-10-15 02:20:14

标签: csv transpose data-processing tsv

我在2D网格上有大量的数据文件。 它们被组织成使得网格中的后续数据行是文件中的后续行。 每个列由制表符分隔。 从本质上讲,这是一个CSV文件,但使用标签而不是列。

我需要转置数据(第一行成为第一列)并将其输出到另一个文件。最好的方法是什么?任何语言都可以(我更喜欢使用Perl或C / C ++)。目前,我有Perl脚本只是将整个文件读入内存,但我的文件只是巨大的。

2 个答案:

答案 0 :(得分:2)

最简单的方法是在输入中进行多次传递,在每次传递时提取列的子集。列数取决于您想要使用多少内存以及输入文件中有多少行。

例如:

在第1遍中,您读取整个输入文件并仅处理第一列,例如10列。如果输入有100万行,则输出将是一个包含100万列和10行的文件。在下一个传递中,您将再次读取输入,并处理第11至20列,将结果附加到原始输出文件。等等......

答案 1 :(得分:0)

如果您安装了安装了NumPy的Python,那么就像这样简单:

#!/usr/bin/env python

import numpy, csv

with open('/path/to/data.csv', 'rb') as file:
    csvdata = csv.reader()

data = numpy.array(csvdata)
transpose = data.T

... csv模块是Python标准库的一部分。