从csv文件中提取特定列,并使用python将其复制到另一个

时间:2010-07-09 03:02:28

标签: python csv

我有一个CSV文件,实际上是一个0和1的矩阵。我需要排除那些有0的列,只选择那些有1的列并将它们复制到另一个CSV文件。

以下是我的尝试:

    reader=csv.DictReader(open("test1.csv","r"),[])

for data in reader:
        if data==1:
                print data

我做错了什么?

2 个答案:

答案 0 :(得分:0)

如果您需要排除其中包含任何零的所有列,那么首先需要读取内存中的整个文件 - 因为只有在看过每一行后才能知道哪些列有任何零!这是一个逻辑需求 - 无论你使用哪种语言,这种需求都将保留,这是问题所固有的

所以,例如:

allrows = list(reader)

现在,allrows是一个词典列表,其项目是字符串,大概是01。现在,您可以这样做:

keepcols = [c for c in allrows[0] if all(r[c] != '0' for r in allrows)]

......不是最快的方法,但希望非常非常简单易懂!

一旦你知道要保留哪些列,准备一个DictWriter实例w,将这些列作为标题和extrasaction='ignore'参数(因此它将忽略“额外”键传递给它的决定,最后

w.writerows(allrows)

如果您的意思不同于“排除其中包含任何零的所有列”,请详细说明 您的意思是“我需要排除那些有0的列”,因为我可以不同的解释。

答案 1 :(得分:0)

reader = csv.DictReader(open("test1.csv", "r"), [])

for data in reader:
    if data[column header] != 0:
         print data[column header]