2017-01-28 5 views
0

У меня есть файл CSV с тонны данных, которые нужно нарисовать и отсортировать, а что нет. Ниже приведен пример данных.Пропуск определенных строк данных - Python

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 

Что я ищу занимает первую строку, 4-й, строки и 8-ая строка, и т.д., и помещая их в список. так это выглядит, как например:

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

Примечание: первая строка из набора данных должна быть в первом столбце вывода, 2-я строка из данных является вторым столбцом вывода и т.д. Кроме того, я хотите иметь возможность контролировать, какие столбцы я выбираю для размещения в списках (и какие строки также).

Я также ищу способ настроить, какую 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 строк на первый число (например, 26 строк числа 10 с данными после него, 26 строк по 20 с данными, 26 из 30 и т. д.))

+1

Я так смущен о первом ряду, 4-й строке, 8-й строке. Это похоже на 1-й столбец, 3-й столбец и 5-й столбец? – Bobby

+0

Я ищу данные каждые 4 строки. Так, например, если мы начнем со 2-й строки (10, 55, 68, 93, 10), мы отправимся в 6-ю строку (20, 53, 13, 96, 57), 10-я строка (не показана в примере) , Мне также нужно контролировать, с какой строки я хочу начать. –

ответ

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]) 
+1

Почему бы не 'if (i% 4 == 0): #append lines', а не проверить, будет ли' if (i% 4! = 0): 'а затем передать и использовать ветвь' else'? –

+0

, потому что я неловкий и не думал об этом :) – user2386276

+0

Хорошо, теперь имеет смысл, когда я смотрю на него. Почему я не думал об этом раньше, чем не знаю. Но теперь, как я буду фактически контролировать, с какой строки я начинаю? –

Смежные вопросы