2016-12-07 3 views
0

私は、csvファイルに保存される2つのデータセットの間の数値を計算するスクリプトを実行しています。文字列のようなグループ化とそのグループ内の最も低い数字の印刷

私は、最低番号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があり、最初の列の値に対して3番目の列の最小値を持つ行だけを別の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])) 
関連する問題