2016-12-07 55 views
0

我正在運行一個腳本,該腳本計算保存到csv文件的兩個數據集之間的數字。像字符串一樣分組並且在該組中打印最低編號

我想讓腳本只將最低數量的PER數據寫入新文件。

例如:

Set 1: 
A 
B 
C 
D 
E 

Set 2: 
V 
W 
X 
Y 
Z 

數據輸出:

A,V,3 
A,W,2 
A,X,9 
A,Y,1 
A,Z,4 
B,V,4 
B,W,2 
etc 
E,Z,6 

從這裏,我想讀取該文件,然後只有:

A,Y,1 
B,W,2 
etc 

寫入到另一個文件。

我一直在用正則表達式,但我沒有太多的經驗,使用該模塊。

我不是在尋找一個完整的解決方案,但可能是一個想法在哪裏/什麼搜索,或者如果有比正則表達式更好的模塊/解決方案。

+0

因此,「A,Y,1」將被選中,是因爲它是所有的「A」值中的最低值?那是對的嗎? – joeb

+0

@joeb正確。在同一個文件中與其餘的組相同 – sjo91190

回答

1

你有一個csv,你想要另一個csv與第三列的最小值爲第一列的值?這不是一個正則表達式問題。使用Python csv模塊

import csv 

with open('data.csv', newline='') as f: 
    r = csv.reader(f) 
    d = {} 
    for line in r: 
     a, b, c = line 
     c = int(c) 
     if a not in d: 
      d[a] = [] 
     d[a].append((a,b,c)) 
with open('output.csv', 'w+', newline='') as f2: 
    w = csv.writer(f2) 
    for a in sorted(d.keys()): 
     w.writerow(min(d[a], key=lambda x: x[2])) 
相關問題