所以我在python中使用2D列表是新手。基本上我有一个巨大的csv格式的excel文件。我已将所有单元格存储到名为matrix的列表中。但是,我只需要第4 - 5列中的信息。我尝试使用范围作为2D列表,但它似乎不起作用。这两列分别包含客户ID和True语句。我的主要目的是计算每个客户ID出现的次数并将其存储到另一个2D阵列中。我只走到这一步:
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 :(得分:0)
我不知道uniqueIDs
是什么,但我认为它是一个列表或集合,对吗?
此代码:
for line in matrix:
将遍历矩阵的每一行。要查看第4和第5列,您只需要将line[3]
用于第4列,将line[4]
用于第5列(请记住,python中的列表是0索引)。
之后,您可以使用该信息完成所需的操作。
答案 1 :(得分:0)
如果第5列等于字符串“true”(或其他一些简单的if
条件),我将需要计算第4列中的项目:
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.Counter
和generator expressions
示例数据:
1,2,3,4,true
1,2,3,4,true
1,2,3,5,true
1,2,3,5,false
输出:{'4': 2, '5': 1}