2014-07-11 27 views
0

因此,我是新來Python中使用2D列表。基本上我有一個csv格式的巨大的Excel文件。我已經將所有的單元存儲在一個名爲矩陣的列表中。但是,我只需要列4 - 5中的信息。我嘗試使用2D列表的範圍,但似乎不起作用。這兩列分別包含客戶ID和True語句。我的主要目的是統計每個客戶ID出現的次數並將其存儲到另一個2D陣列中。我只得到了這麼多:訪問python中的2D列表中的2列

with open('authlog_20140305-20140617.csv','r') as file: 
    contents = csv.reader(file) 
    matrix = list() 
    for row in contents: 
     matrix.append(row) 

for item in matrix: # what I want is so that I only read columns 4 - 5 in matrix 
    for item2 in uniqueIDs: 
     if(item != item2): 
      item2.append(item) 

一些幫助將不勝感激!

+0

如果你只對從第1列開始的第4列和第5列感興趣,使用像這樣的矩陣的基於0的索引'matrix.append(row [3:4])'......但是真正的語句是什麼好因爲如果您只計算具有特定客戶ID的所有行? – Aprillion

+0

其實所有的行都有一個客戶ID –

回答

0

我不知道uniqueIDs是什麼,但我認爲它是一個列表或集合,對不對?

此代碼:

for line in matrix: 

是要遍歷您的矩陣的每一行。爲了看到第4列和第5列,您只需要在第4列使用line[3],在第5列使用line[4](記住python中的列表是0索引)。

之後,你可以做你需要的信息。

0

我將有信仰的飛躍,假設你需要計算在當且僅當第5列第4列項等於字符串「true」(或其他一些簡單的if條件):

import csv 
from collections import Counter 

with open('authlog_20140305-20140617.csv','r') as file: 
    contents = csv.reader(file) 
    c = Counter(row[3] for row in contents if row[4]=='true') 
print(dict(c)) 

看到有關collections.Countergenerator expressions

樣本數據DOC:

1,2,3,4,true 
1,2,3,4,true 
1,2,3,5,true 
1,2,3,5,false 

輸出:{'4': 2, '5': 1}

+0

集合是python庫的一部分還是我必須下載它? –

+0

是的,「集合」是標準庫的一部分。答案甚至可以鏈接到文檔。 –