2017-10-13 67 views
0

我有一個文件「data.csv」,看起來像Python的讀取csv文件列進名單,無視頭

ColA, ColB, ColC 
1,2,3 
4,5,6 
7,8,9 

我想打開和讀取文件列進名單,與第1項該列表被省略,例如

dataA = [1,4,7] 
dataB = [2,5,8] 
dataC = [3,6,9] 

實際上有超過3列,列表很長,這只是格式的一個例子。我已經試過:

csv_file = open('data.csv','rb') 
csv_array = [] 

for row in csv.reader(csv_file, delimiter=','): 
    csv_array.append(row) 

在那裏我會那麼csv_array各指標分配到一個列表,例如

dataA = [int(i) for i in csv_array[0]] 

但我發現了錯誤:

_csv.Error: new-line character seen in unquoted field - do you need to open the file in universal-newline mode? 

而且感覺很長篇大論只是將數據保存到幾個列表的方式...

謝謝!

編輯:

這是我如何解決它:

import pandas as pd 

df = pd.read_csv('data.csv', names = ['ColA','ColB','ColC'] 

dataA = map(int,(df.ColA.tolist())[1:3]) 

,並重複列的其餘部分。

+0

如果你不介意使用進口的,我會建議使用tablib,你可以在這裏找到:http://docs.python-tablib.org/en/master/ – rak007

回答

1

使用熊貓:

import pandas as pd 

df = pd.DataFrame.from_csv(path) 
rows = df.apply(lambda x: x.tolist(), axis=1) 
+0

爲什麼在csv作爲'包含電池'來使用熊貓時? –

0

好像你在你的csv文件中有OSX行尾。嘗試將csv文件保存爲「Windows逗號分隔(.csv)」格式。

也有更簡單的方法做你與CSV讀者做什麼:

csv_array = [] 
with open('data.csv', 'r') as csv_file: 
    reader = csv.reader(csv_file) 
    # remove headers 
    reader.next() 
    # loop over rows in the file, append them to your array. each row is already formatted as a list. 
    for row in reader: 
     csv_array.append(row) 

然後,您可以設置dataA = csv_array[0]

+0

該文件從Excel導出,這是隻是一個簡單的.csv文件,據我所知... –

+0

好吧,這幾乎工作,但我得到的行而不是列,即'dataA = [1,2,3]',我想' dataA = [1,4,7]' –

+0

對不起,錯過了這部分的問題。你可以使用'zip'轉置它:'csv_array = zip(csv_array [0],csv_array [1],csv_array [2]'。可能有更簡單的方法,但我認爲這是最詳細和容易獲得的 – Eqomatic

1

要跳過頭,在一個單獨的行來創建你的讀者。然後從行的列表轉換爲列的列表,使用zip()

import csv 

with open('data.csv', 'rb') as f_input: 
    csv_input = csv.reader(f_input) 
    header = next(csv_input) 
    data = zip(*[map(int, row) for row in csv_input]) 

print data 

給你:

[(1, 4, 7), (2, 5, 8), (3, 6, 9)] 

所以,如果需要的話:

dataA = data[0] 
0

首先如果你用csv.reader(csv_file,delimiter =',')讀取csv文件,您仍然會讀取標題。

csv_array [0]將標題行 - > [ '可口可樂', 'COLB', 'COLC']

此外,如果你使用的是Mac,這個問題已經在此處引用:CSV new-line character seen in unquoted field error

我會推薦使用熊貓& numpy來代替,如果你會使用數據做更多的分析。它讀取csv文件以熊貓數據框。 https://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_csv.html