Найти - Пользователи
Полная версия: Как преобразовать таблицу csv в python?
Начало » Python для новичков » Как преобразовать таблицу csv в python?
1
annfromomsk
Всем добрый день! Вопрос от новичка в python.
У меня есть такая таблица в .csv с разделителем табуляцией:

header 1 0 1 2 3
a 0 10 10 10
Задача преобразовать ее в такой формат:

header 1 header 2 value
a 0 0
a 1 10
a 2 10
a 3 10
где “header 2” получен из первой строки, “value” - из второй. Кто-нибудь сталкивался подобным преобразованием? Как объяснить программе откуда загружать значения в новые столбцы? Буду рада Вашим комментариям и примерам кода.
doza_and
annfromomsk
таблица в .csv с разделителем табуляцией:
Это тогда называется tsv.
annfromomsk
Кто-нибудь сталкивался подобным преобразованием?
Конечно нет. Возможных преобразований практически бесконечно много, тут по теории вероятности ваш вариант просто ни у кого никогда не встретится.
annfromomsk
Как объяснить программе откуда загружать значения в новые столбцы?
Ну начните с того что объясните это нам а не программе. Я например не понял принцип построения выходного формата. Сделайте все поля уникальными и покажите выходной формат.

annfromomsk
Спасибо за Ваши замечания
doza_and
Вот исправленный вариант вопроса.
Изначальная таблица:
“Header 1” “0” “1” “2” “3”
“a” “10” “11” “12” “13”

Изначальную таблицу нужно преобразовать таким образом, чтобы каждому значению “Value” из (“10” “11” “12” “13”) соответствовала отдельная строка. При этом “Header 1” у всех одинаковый (“a”), а значения “Header 2” для каждого “Value” берутся из первой строчки.

Выходной формат
“Value” “Header 1” “Header 2”
“10” “a” “0”
“11” “a” “1”
“12” “a” “2”
“13” “a” “3”

vic57
 >>> doc='''Header 1	0	1	2	3
a	10	11	12	13
'''
>>> l = [[j for j in i.split('\t')] for i in doc.strip().split('\n')]
>>> x= len(l[0])
>>> y = len(l)
>>> out = [[l[j][i] for j in range(y)] for i in range(x)]
>>> s = '\t'.join(['Value','Header1','Header2']) + '\n'
>>> for i in out[1:]:
	s += '\t'.join([i[1],'a',i[0]]) +'\n'
	
>>> print(s)
Value	Header1	Header2
10	a	0
11	a	1
12	a	2
13	a	3
>>> 
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB