2015-11-16 1 views
0

После работы с Python и CSV-модулем какое-то время я смог извлечь некоторые данные с определенными значениями после переноса исходного вывода , и мы планируем использовать код для будущих отчетов. Дело в том, что код должен читать его в столбцах, а не в строках, для отчета.Как я могу сортировать данные из CSV из строк в столбцы на основе заголовков заголовков

По существу, данные таковы: 1/Location/Ratio/Delay/Grade, затем 3/Location/Ratio/Delay/Grade и т. Д., Пока данные не закончится.

Ниже каждого из них приведены конкретные данные, относящиеся к ним. В принципе, выход читает в гигантский бассейн строк, и я хочу, чтобы по существу были чтения данных, как это:

1/Location/Ratio/Delay/Grade 
(Data) 

Но для всех данных. Вместо длинной строки я в основном рассматривал фрагмент кода, который позволит мне разделять строки по столбцам на основе чисел, заданных в каждом месте. (Например, 1, 3, 8, 22 и т. Д.). Это позволит мне иметь большой ряд. Без необходимости транспонировать, потому что я уже сделал это, чтобы зайти так далеко.

Спасибо, ребята, заранее! Если мне придется публиковать мои коды, я готов это сделать.

Я хочу, чтобы перейти от этого ... enter image description here

... к этому enter image description here

+0

Ваш вопрос будет извлечь выгоду из наличия полностью обработанный пример, показывающий 10 строк ввода и ожидаемый результат. На данный момент не совсем ясно, чего вы пытаетесь достичь (нажмите кнопку редактирования, чтобы добавить больше контента). –

+0

Приношу свои извинения. Я все еще изучаю этот сайт. Я добавил несколько фотографий, чтобы объяснить, что происходит в файлах csv, которые я конвертирую. – SomeNewPythonGuy

+0

Я читал о функции расплава через модуль Pandas, но я не знаю, как начать это в этой функции. Кто-нибудь хорошо разбирается в этой области? – SomeNewPythonGuy

ответ

0

Может быть, это даст вам некоторые идеи, следующий сценарий принимает входной файл CSV и определяет, как многие горизонтальные блоки подсчитывают, сколько столбцов содержит слово Movement.

Затем он разбивает каждую группу столбцов на каждый столбец Movement и записывает вывод в новый файл output.csv.

from itertools import product 

with open('input.csv', 'rb') as f_input, open('output.csv', 'wb') as f_output: 
    csv_input = csv.reader(f_input) 
    csv_output = csv.writer(f_output) 

    rows = list(csv_input) # Load all rows in 
    block_count = len([x for x in rows[0] if x.find('Movement') != -1]) 
    row_count = len(rows) 
    col_count = len(rows[0])/block_count 

    for block, row in product(range(block_count), range(row_count)): 
     csv_output.writerow(rows[row][block * col_count : block * col_count + col_count]) 

Так следующий входной файл:

1 Movement,c2,c3,c4,c5,c6,c7,2 Movement,c2,c3,c4,c5,c6,c7,3 Movement,c2,c3,c4,c5,c6,c7 
1,2,3,4,5,6,7,1,2,3,4,5,6,7,1,2,3,4,5,6,7 
1,2,3,4,5,6,7,1,2,3,4,5,6,7,1,2,3,4,5,6,7 
1,2,3,4,5,6,7,1,2,3,4,5,6,7,1,2,3,4,5,6,7 
1,2,3,4,5,6,7,1,2,3,4,5,6,7,1,2,3,4,5,6,7 
1,2,3,4,5,6,7,1,2,3,4,5,6,7,1,2,3,4,5,6,7 

бы произвести следующий выходной файл:

1 Movement,c2,c3,c4,c5,c6,c7 
1,2,3,4,5,6,7 
1,2,3,4,5,6,7 
1,2,3,4,5,6,7 
1,2,3,4,5,6,7 
1,2,3,4,5,6,7 
2 Movement,c2,c3,c4,c5,c6,c7 
1,2,3,4,5,6,7 
1,2,3,4,5,6,7 
1,2,3,4,5,6,7 
1,2,3,4,5,6,7 
1,2,3,4,5,6,7 
3 Movement,c2,c3,c4,c5,c6,c7 
1,2,3,4,5,6,7 
1,2,3,4,5,6,7 
1,2,3,4,5,6,7 
1,2,3,4,5,6,7 
1,2,3,4,5,6,7 

Испытано с помощью Python 2.7.9

+0

Он вызывает следующую ошибку: Traceback (последний последний вызов): Файл «C: /Users/aobryant/Desktop/Yep.py», строка 8, в rows = list (csv_input) # Загрузить все строки в _csv.Error: iterator должен возвращать строки, а не байты (вы открыли файл в текстовом режиме?) – SomeNewPythonGuy

+0

Используете ли вы Python 3.x? –

+0

Да, именно так. Мальчик, я дурак. Лол, спасибо тебе. – SomeNewPythonGuy

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

  • Нет связанных вопросов^_^