2013-07-23 33 views
0

我仍在學習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

使用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]) 
+0

謝謝!但我收到以下錯誤消息:** ValueError:float()的無效文字:0.0001 \t 0.6 **任何想法爲什麼? – Fabs

+0

@Fabs:您可能必須在'csv.reader'中設置分隔符。 –

+0

它知道了!謝謝!這個答案有多酷!我希望有一天我會知道所有這些python函數! :) – Fabs

相關問題