我还在学习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)
但我不知道如何使用新生成的数据进行这些操作和制作新文件。
非常感谢您的帮助!
答案 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])