在python中访问2D列表中的2列

时间:2014-07-11 21:43:13

标签: csv python-3.x

所以我在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)

非常感谢一些帮助!

2 个答案:

答案 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.Countergenerator 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}