在制表符分隔文件上执行计算

时间:2013-07-23 20:44:30

标签: python arrays tab-delimited-text

我还在学习Python,但我仍然不知道如何使用数组。

我想读一个制表符分隔的文件(例如,在我的情况下,我将有大约400行):

  Col1      Col2
  0.0001    0.6
  0.0001    0.5
  0.000006  0.8
  0.0001    0.0003
  0.002     1
  0.002     3

我想获得以下输出:

Col1      Col2
0.0001    0.36676667
0.000006  0.8
0.002     2

所以我想在 Col1 中保持相同的值,但是取 Col2 中的值的平均值,这对应于 Col1 中的相同值。

我可以使用以下方法读取数组:

  arr = np.genfromtxt('test.csv', dtype=None, delimiter='\t', skiprows=1)

但我不知道如何使用新生成的数据进行这些操作和制作新文件。

非常感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

使用collections.defaultdict并将list作为默认参数。

将第一列中的值作为键,并附加第二个值。

import csv
from collections import defaultdict

# Gather the data from the CSV file
d = defaultdict(list)
with open('data.csv', 'r') as csvfile:
    reader = csv.reader(csvfile, delimiter='\t')
    for row in reader:
        d[float(row[0])].append(float(row[1]))

# Print the mean.
for k in d.keys():
    print k, sum(d[k])/len(d[k])