我有以下格式的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);
之类的内容?
每列对应一家公司
答案 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