【问题标题】:Using datetime.strptime to get dates from .csv column使用 datetime.strptime 从 .csv 列获取日期
【发布时间】:2016-07-15 22:09:34
【问题描述】:

请帮忙!!

这段代码有很多麻烦。这里的任务是根据相关日期绘制一些信息(高、低和中)。

数据位于 .csv 文件中,标题为:日期、高、中、低。日期采用 dd/mm/yyyy 格式。

到目前为止,我已经使用 genfromtxt 来指定列和数据类型等。 但是,我认为 Python 读取列的方式存在问题 - 我不断收到“索引过多”:

Traceback (most recent call last):
File "F:\Python\A1.py", line 14, in <module>
x = data[:,0]
IndexError: too many indices

或者如果我使用 x = data[;,'Date] 我会得到这个:

Traceback (most recent call last):
File "F:\Python\A1.py", line 14, in <module>
x = data[:,'Date']
ValueError: invalid literal for long() with base 10: 'Date'

完整代码如下:

import pylab as py
import numpy as np
import datetime as dt
import csv

data = np.genfromtxt('F:\\Python\\All.csv', usecols=(0,1,2,3), names=True, skip_header=0, dtype=[('Date', 'S10')]),('High','f8'),('Medium','f8'),('Low','f8')], delimiter = ',')

print data

x = data[:,Date]
y1 = data[:,1]
y2 = data[:,2]
y3 = data[:,3]

Date2 = []

for x in data:
date_format = dt.datetime.strptime((str(x)), '%d/%m/%Y')
Date2.append.date_format

谢谢!

【问题讨论】:

  • 你能发布 CSV 前几行的 sn-p 吗?当您打印出“数据”时,您会看到什么?是否符合您的预期?每当我遇到这些问题时,通常是 python 解析文件的问题与我预期的不同。

标签: python csv datetime numpy genfromtxt


【解决方案1】:

data = np.genfromtxt(...) 生成包含三个元素的元组的一维数组。例如,数据将如下所示。

array([(b'02/03/2015', 3.0, 2.0, 1.0), (b'03/04/2015', 4.0, 3.0, 1.0),
       (b'04/05/2015', 10.0, 9.0, 7.0), (b'05/06/2015', 12.0, 4.0, 3.0),
       (b'06/07/2015', 2.0, 1.0, 0.0)], 
dtype=[('Date', 'S10'), ('High', '<f8'), ('Medium', '<f8'), ('Low', '<f8')])

您尝试做的是将数据视为二维数组,但它实际上是一维数组。所以你可以做这样的事情

x =  [foo[0] for foo in data]
y1 = [foo[1] for foo in data]
y2 = [foo[2] for foo in data]
y3 = [foo[3] for foo in data]

【讨论】:

    猜你喜欢
    • 2013-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-29
    • 1970-01-01
    • 2017-12-21
    • 1970-01-01
    • 2020-02-05
    相关资源
    最近更新 更多