2016-12-07 16 views
-2

我有一個表格文件,其中第一列有ID,第二列有數字值。我需要生成一個文件,其中只包含每個ID最大分數的行。篩選給定ID的最大值的行

因此,我想借此:

ES.001  2.33 
ES.001  1.39 
ES.001 119.55 
ES.001  14.55 
ES.073  0.35 
ES.073  17.95 
ES.140  1.14 
ES.140  53.88 
ES.140  18.28 
ES.178 150.27 

,併產生這樣的:

ES.001 119.55 
ES.073  17.95 
ES.140  53.88 
ES.178 150.27 

我怎樣才能做到這一點在Python?

+0

我已經寫了一個腳本,讀取一行,並使一個向量從if。然後它將第二列值的值存儲到一個變量中。它讀取行,直到在第一列中找到不同的值。對於每行讀取,如果第二列的值大於變量中存儲的值,則最大值將取代先前的值。問題是我的腳本跳過了每個ID的第一行。我現在沒有代碼,但我可以稍後再發布。 – elsoja

回答

0

那看一下代碼下面。也許它可以幫助你。

with open('FILENAME') as f: 
     lines = f.readlines() 
     ids = {} 
     for line in lines: 
      line = line.rstrip() 
      line = line.split(' ') 
      value = ids.get(line[0], list()) 
      value.append(float(line[-1])) 
      ids[line[0]] = value 

max_values = [] 
for key, value in ids.items(): 
     print key, max(value)