【问题标题】:How to read CSV file column by column with Python如何使用 Python 逐列读取 CSV 文件
【发布时间】:2016-12-18 01:00:08
【问题描述】:

我有一个以下格式的 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); 的内容?

每一列对应一个公司

【问题讨论】:

  • 文件有多大?
  • 1200行250列

标签: python python-2.7 csv psql


【解决方案1】:

我想知道这样的事情是否可行:

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

【讨论】:

    猜你喜欢
    • 2012-08-23
    • 2022-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-08
    • 2018-04-26
    • 2015-10-25
    • 1970-01-01
    相关资源
    最近更新 更多