2016-12-18 4 views
0

ich eine CSV-Datei in folgendem Format habenWie mit Python CSV-Datei Spalte für Spalte lesen

Date, Company, Company, Company 
1/1/12,  10,  100,  50 
1/2/12,  12,  99,  53 
1/3/12,  11,  97,  49 

ich zur Eingabe bin versucht, die Daten in eine Datenbank PSQL.

Wie würde ich gehen Spalte für Spalte auf die Daten gehen, so dass ich etwas wie INSERT INTO table VALUES(company, date, price); haben würde?

Jede Spalte entspricht einer Firma

+0

Wie groß ist die Datei? – pbreach

+0

1200 Zeilen und 250 Spalten – user3628240

Antwort

0

Ich frage mich, wenn so etwas wie dies funktionieren würde:

import csv 

with open("file.csv") as f: 
    reader = csv.reader(f) 
    for i, column in enumerate(zip(*reader)): 
     if i == 0: 
      _, dates = column 
     else: 
      # PY3.x 
      company, *prices = column 
      # PY2.7 
      company, prices = column[0], column[1:] 

      # Do SQL command here 

Die Idee zu verwenden ist, um die Daten zu übertragen, die durch die durch Reihen mit csv.reader eingelesen mit zip (* reader). Ich kann das jetzt nicht testen, aber Sie müssen möglicherweise zip(*list(reader)) verwenden, um alle Daten zu transponieren, jedoch wird dadurch die gesamte Datei und wahrscheinlich eine Kopie erstellen. Da Ihre Daten klein sind, ist das wahrscheinlich in Ordnung.

Für diese Datengröße können Sie auch Pandas verwenden. Was wäre nur so etwas wie:

import pandas as pd 

data = pd.read_csv ("file.csv", index_col=0, parse_dates=False) 

dates = data.index.values 

for company in data.columns: 
    price = data[company].values 

    #SQL command here