python - ValueError: данные времени не соответствуют формату

Я загрузил свой CSV-файл TSLA.csv из здесь . Он имеет строку заголовка и 7 столбцов, первый из которых — дата, остальные — числа с плавающей запятой и целые числа.

Я хочу иметь возможность получить из него массив numpy:

import csv
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
import urllib


def bytespdate2num(fmt, encoding="utf-8"):
    strconverter = mdates.strpdate2num(fmt)
    def bytesconverter(b): 
        s = b.decode(encoding)
        return strconverter(s)
    return bytesconverter

with open("TSLA.CSV", "r") as csvfile:
    stock_price = csv.reader(csvfile, delimiter=" ")
    stock_price = list(stock_price)


date, closep, highp, lowp, openp, volume = np.loadtxt(stock_price, 
                                                      delimiter = ",",
                                                      unpack = True,
                                                      skiprows=1,
                                                      converters={0: bytespdate2num("%Y-%m-%d")})

Проблема в том, что я получаю следующую ошибку:

ValueError: данные времени "['2010-06-29" не соответствуют формату "%Y-%m-%d"

Я дважды проверил формат и проверил другие вопросы здесь, но в основном они касались неправильного формата... Я не вижу здесь проблемы. Помощь приветствуется.


person P. Prunesquallor    schedule 07.09.2017    source источник
comment
Это полный код? Я не вижу, где вы на самом деле используете строку формата в коде. Можете ли вы добавить и это?   -  person Kshitij Mittal    schedule 07.09.2017
comment
@KshitijMittal, строка формата находится в последней строке кода и передается функции bytespdate2num.   -  person P. Prunesquallor    schedule 07.09.2017


Ответы (1)


Хорошо, я считаю, что проблема здесь:

Посмотрите еще раз на ошибку, там написано "['2010-06-29" does not match data format. Это потому, что вы не пытаетесь разобрать только дату, посмотрите на двойные кавычки, окружающие дату.

Вы пытаетесь разобрать:

['2010-06-29

В вашей строке есть лишний [', который все портит.

person Strinnityk    schedule 07.09.2017
comment
Даже не волнуйтесь, такие вещи случаются. Сначала я думал так же, как и вы. Мне потребовалось время, чтобы осознать. - person Strinnityk; 07.09.2017