如何读取文件,根据指定的列进行排序

时间:2014-04-02 08:15:33

标签: python sorting

我正在尝试将我在MATLAB中编写的所有代码转换为python。我有一个问题,我找不到解决方法。也许有人有个主意。

我有一个有m行和两列的文件。我想读取文件,然后根据第二列排序文件。稍后,我必须使用排序的第一列(从第一行到第1000行)并找到大于阈值的值(此处例如为0.2)并对它们求和。

希望有人有个主意。 感谢

2 个答案:

答案 0 :(得分:3)

例如,如果文件的字段由制表符分隔,行按行分隔,则问题非常简单:

f = open("filename.csv")
data = [map(float, x.split("\t")) for x in f.readlines()]
data.sort(key = lambda x:x[1])
result = sum(x[0] for x in data[:1000] if x[0] > 0.2)

答案 1 :(得分:0)

考虑使用Numpy数组及其附带的函数。它们(通常)与MATLAB中的相似,这可能使您从后者转换更容易。

import numpy as np

data = np.genfromtext("filename.csv", delimiter="\t", dtype=np.float)
idx = np.argsort(data[:, 1])
data1000 = data[idx[:1000]]  # First 1000 of sorted data
result = np.sum(data1000[data1000[:, 0] > 0.2, 0])