跳过某些数据行 - Python

时间:2017-01-28 21:25:49

标签: python list csv indexing

我有一个CSV文件,其中包含大量需要绘制和排序的数据,以及不需要的数据。下面是一个数据示例。

10, 50, 60, 74, 19
10, 55, 68, 93, 10
10, 84, 92, 75, 32
10, 58, 39, 82, 12
20, 15, 12, 84, 35
20, 53, 13, 96, 57
20, 53, 32, 64, 67
20, 56, 31, 29, 18
30, 85, 92, 18, 95
30, 75, 12, 92, 12
...
90, 35, 21, 95, 47
100, 67, 96, 73, 47
100, 86, 32, 62, 32
100, 32, 53, 69, 57
100, 34, 64, 72, 34

我正在寻找的是第一行,第四行,第八行等,并将它们放入列表中。所以它看起来像这样:

column1 = ['10', '20', '30', ..., '100']
column3 = ['60', '12', '92', ..., '73']
column5 = ['19', '35', '95', ..., '47']

注意:数据集的第一行应该在输出的第一列,数据的第二行是第二列的输出,等等。 此外,我希望能够控制我选择放入列表的列(以及哪些行)。

我也正在寻找一种方法来调整我想要开始的第n行。例如,如果我们从第2行开始,输出就是这样:

column1 = ['10', '20', '30', ..., '100']
column3 = ['68', '13', '12', ..., '32']
column5 = ['10', '35', '12', ..., '32']

这是我到目前为止的代码:

import numpy as np
import matplotlib.pyplot as plt
import csv

column1 = []
column2 = []
column4 = []

with open('csvFile.csv', 'rb') as f:
    w = csv.reader(f, delimiter = ',')
    for i, line in enumerate(w):
        if i == 0 or i == 1:
            pass # Skip first row
        else:
            column1.append(line[1])
            column2.append(line[2])
            column4.append(line[4])

这给了我列中的所有值,这是我不想要的。也许我已经过度思考了这一点,因为我在考虑做的事情是将列表编入索引并删除我不想要的值(我的数据集比这里显示的要大得多 - 我总共有每个第一个数字26行(即数字10的26行,其后有数据,26行20个数据,26个30个等))

1 个答案:

答案 0 :(得分:1)

您可以检查i是否为四的倍数。如果它不是四的倍数,则跳过

with open("data", 'rb') as f:
    w = csv.reader(f,delimiter = ",")
    for i, line in enumerate(w):
        if (i % 4 == 0): 
            column1.append(line[0])
            column2.append(line[1])
            column3.append(line[2])