我仍在学习 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)
但我不知道如何进行这些操作并使用新生成的数据创建一个新文件。
非常感谢您的帮助!
最佳答案
使用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])
关于python - 对制表符分隔的文件执行计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17820699/