#python #list #merge
#python #Список #слияние
Вопрос:
У меня есть несколько строк из файла CSV, которые необходимо объединить, чтобы создать один список.
Мой набор данных будет выглядеть так;
column 1 column 2 column3 column 4 ....... all the way to column 10
A 1 2 3 4 5 6 7 8 9 10
B 5 10 15 16 17 18 19 20
В настоящее время мой код будет выглядеть так:
cd1 = []
cd2 = []
cd3 = []
cd4 = []
cd5 = []
cd6 = []
cd7 = []
cd8 = []
cd9 = []
cd10 = []
#create lists with values from rows
for row in physiciancounts:
patID.append(row[0])
cd1.append(row[2])
cd2.append(row[3])
cd3.append(row[4])
all the way till row 10
# then I'll merge it using zip
Мне интересно, есть ли более питонический способ сделать это вместо создания нескольких списков и объединения их вместе.
результат будет выглядеть примерно так:
(1,2,3,4,5,6,7,8,9,10)
(5,10,15,16,17,18,19,20)
Я не включаю первый столбец, потому что это должен быть отдельный список. Я не получаю сообщение об ошибке; Я просто хочу посмотреть, есть ли лучший способ сделать это. Все еще новичок в python, поэтому я борюсь. Я также не могу выполнять однострочные циклы for для объема того, что я делаю.
Комментарии:
1. Трудно понять, что вы пытаетесь спросить, без образца ваших входных данных. Не могли бы вы предоставить всего несколько строк фактического CSV, в идеале для получения ожидаемого результата, который вы уже показываете?
Ответ №1:
Если я правильно понял ваш вопрос, просто добавьте еще один цикл.
column_count = 10
cd = [[]] * column_count
for row in physiciancounts:
for field in range(column_count):
cd[field].append(row[field])
Это также бесполезно собирает второй столбец (который вы называете «первым» в своем вопросе, т. Е. Индекс 1); если вы хотите избежать этого, возможно, добавьте if field != 1:
внутри for
цикла.
Ваш вопрос также неясен, есть ли 10 или 11 столбцов; возможно, используйте column_count = 11
при необходимости.