2016-03-27 3 views
0

Скажем, у меня есть CSV-файл:Как добавить данные столбца в CSV-файла в массив

Col1,Col2,Col3,Col4 
1,2,3,4 
1,2,3,4 
1,2,3,4 
1,2,3,4 

Я хочу, чтобы добавить все значения в столбце в массиве затем манипулировать ею, затем к следующий столбец

Итак:

# loop through data 
Col1 = [1,1,1,1] 
# do something 
Col2 = [2,2,2,2] 
# do something 
Col3 = [3,3,3,3] 
# do something 
Col4 = [4,4,4,4] 

проблема с использованием

data = csv.reader(input_file) 
lst = [] 

for row in data: 
    lst.append(row[0]) 
    # do something with lst 

Я могу сделать это только для первого столбца.

+0

Пожалуйста, не редактируйте прочь содержание вашего вопроса. Или этот вопрос полезен в качестве посадочной площадки для будущих поисков, или вы должны полностью удалить его с помощью ссылки ** delete ** в левом нижнем углу. – Quentin

ответ

0

Заканчивать этот пост Бен Саутгейт: Extract csv file specific columns to list in Python

import csv 

# open the file in universal line ending mode 
with open('test.csv', 'rU') as infile: 
    # read the file as a dictionary for each row ({header : value}) 
    reader = csv.DictReader(infile) 
    data = {} 
    for row in reader: 
    for header, value in row.items(): 
     try: 
     data[header].append(value) 
     except KeyError: 
     data[header] = [value] 

Этот код им создает Dict со своими списками. Вы можете получить к ним доступ:

Col1 = data['Col1'] 

бы поставили ссылку на комментарий, но я не хватает респ еще комментариев.

0

Я хотел бы использовать NumPy читать весь файл CSV сразу, а затем вы можете просто работать с массивом следующим образом:

import numpy as np 
my_data = np.genfromtxt('test.csv', delimiter=',') 
for column in my_data.T: 
    print(column) 

Что дает:

[ 1. 1. 1. 1.] 
[ 2. 2. 2. 2.] 
[ 3. 3. 3. 3.] 
[ 4. 4. 4. 4.] 

для CSV-файла, как это :

1,2,3,4 
1,2,3,4 
1,2,3,4 
1,2,3,4 
0

Кажется, вы можете прочитать файл в списке списков. Если да, посмотрите на функцию zip. Он принимает списки в качестве аргументов, и сочетает в себе первые элементы в новый список, второй в новый список, и т.д.

>>> data = [[1,2,3,4],[1,2,3,4],[1,2,3,4]] 
>>> transposed = zip(*data) 
>>> transposed 
[(1, 1, 1), (2, 2, 2), (3, 3, 3), (4, 4, 4)] 
>>> 

Как было указано, NumPy может сделать это (и больше!), Но это дополнительный пакет не входит в состав python.

0

Это считывает содержимое в словарь:

import csv 
import pprint 

with open('cols.csv') as input_file: 
    reader = csv.reader(input_file) 
    col_names = next(reader) 
    data = {name: [] for name in col_names} 
    for line in reader: 
     for pos, name in enumerate(col_names): 
      data[name].append(int(line[pos])) 

pprint.pprint(data) 

Выход:

{'Col1': [1, 1, 1, 1], 
'Col2': [2, 2, 2, 2], 
'Col3': [3, 3, 3, 3], 
'Col4': [4, 4, 4, 4]} 
Смежные вопросы