跳过CSV中包含特定字符串的行

时间:2019-04-08 19:44:27

标签: python python-2.7 csv for-loop

我有一个字符串列表(比这个例子要长)。如果一行数据中存在一个字符串,我想跳过该行。到目前为止,这是我所能得到的,但是出现索引错误,这使我相信我没有正确循环。

stringList = ["ABC", "AAB", "AAA"]

with open('filename.csv', 'r')as csvfile:
    filereader = csv.reader(csvfile, delimiter=',')
    next(filereader, None) #Skip header row
    for row in filereader:
        for k in stringList:
            if k not in row:
                data1 = column[1] 

我得到的错误是:IndexError: list index out of range。我知道我正在按行读取,但是我需要按列提取数据。

2 个答案:

答案 0 :(得分:1)

使用熊猫,您可以戴着面具轻松地做到这一点。查看更多:link

import pandas as pd

data = pd.read_csv('filename.csv')
data = data.loc[data['column_name'] not in stringList]

答案 1 :(得分:1)

该错误是因为row是一个列表,并且您正在使用/访问它作为普通变量。 您可以通过使用列表行的适当索引来访问某些列。例如:在第一次迭代中,row[0]将是第一行第一列中的元素,row[1]将是第二列条目中的元素,依此类推。在row的后续迭代中,您可以向下访问后续列的条目。

这是一个简单的循环。

for row in filereader:
        for k in stringList:
            for i in range(len(row)):
                if k not in row[i]:
                    someVar=row[i]