2016-06-07 16 views
2

Ich habe Daten in einer CSV-Datei, die aussieht, als ob dies importiert wird.Python - Aufteilen von Daten als Spalten in CSV-Datei

import csv 

with open('Half-life.csv', 'r') as f: 
    data = list(csv.reader(f)) 

die Daten werden als dies herauskommen, wo es druckt die Zeilen wie data[0] = ['10', '2', '2'] und so weiter.

Was ich aber möchte, ist die Daten als Spalten anstelle von Zeilen abrufen, wo in diesem Fall gibt es 3 Spalten.

+4

Können Sie Pandas installieren? 'pandas.read_csv ('Half-life.csv') würde dies tun und die richtigen Typen für dich ableiten. –

Antwort

2

Sie können drei separate Listen erstellen und sie dann an jede Datei anfügen, indem Sie csv.reader verwenden.

import csv 

c1 = [] 
c2 = [] 
c3 = [] 
with open('Half-life.csv', 'r') as f: 
    reader = csv.reader(f, delimiter=',') 
    for row in reader: 
     c1.append(row[0]) 
     c2.append(row[1]) 
     c3.append(row[2]) 
+0

Die '' 'for'''-Schleife könnte durch' '' columns = zip (* reader) '' 'ersetzt werden. – wwii

3

Ein wenig mehr automatische und flexible Version von Alexander's answer:

import csv 
from collections import defaultdict 

columns = defaultdict(list) 
with open('Half-life.csv', 'r') as f: 
    reader = csv.reader(f, delimiter=',') 
    for row in reader: 
     for i in range(len(row)): 
      columns[i].append(row[i]) 
# Following line is only necessary if you want a key error for invalid column numbers 
columns = dict(columns) 

könnten Sie ändern auch diese Spaltenüberschriften Zahlen anstelle von Spalte zu verwenden.

import csv 
from collections import defaultdict 

columns = defaultdict(list) 
with open('Half-life.csv', 'r') as f: 
    reader = csv.reader(f, delimiter=',') 
    headers = next(reader) 
    column_nums = range(len(headers)) # Do NOT change to xrange 
    for row in reader: 
     for i in column_nums: 
      columns[headers[i]].append(row[i]) 
# Following line is only necessary if you want a key error for invalid column names 
columns = dict(columns) 
2

Eine weitere Option, wenn Sie numpy installiert haben, können Sie loadtxt verwenden, um eine CSV-Datei in eine numpy Array zu lesen. Sie können das Array dann transponieren, wenn Sie mehr Spalten als Zeilen haben möchten (ich war nicht ganz klar, wie Sie die Daten aussehen lassen wollten). Zum Beispiel:

import numpy as np 
# Load data 
data = np.loadtxt('csv_file.csv', delimiter=',') 
# Transpose data if needs be 
data = np.transpose(data) 
Verwandte Themen