如何使用Python逐列读取CSV文件

时间:2016-12-18 01:00:08

标签: python python-2.7 csv psql

我有以下格式的CSV文件

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

我正在尝试将数据输入PSQL数据库。

我将如何逐列逐列数据,以便我有INSERT INTO table VALUES(company, date, price);之类的内容?

每列对应一家公司

1 个答案:

答案 0 :(得分:0)

我想知道这样的事情是否有效:

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

这个想法是使用zip(* reader)来转置用csv.reader行读入的数据。我现在无法对此进行测试,但您可能必须使用zip(*list(reader))转置所有数据,但这会加载整个文件并且可能会复制。由于您的数据很小,可能还可以。

对于此大小的数据,您还可以使用pandas。这就像是:

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