2016-03-27 64 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 
問題10

是我只能做第一列。

+0

請不要修改了你的問題的內容。這個問題對於未來搜索的着陸點很有用,或者您應該通過左下角的**刪除**鏈接完全刪除它。 – 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] 

此代碼由他會爲您列出的字典。然後,您可以訪問它們:

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]}