Quandl + Python: столбец даты не работает

Я пытаюсь получить некоторые данные через API из quandl, но столбец даты, похоже, не работает на том же уровне, что и другие столбцы. Например. когда я использую следующий код:

data = quandl.get("WIKI/KO", trim_start = "2000-12-12", trim_end =
"2014-12-30", authtoken=quandl.ApiConfig.api_key) 

print(data['Open'])

Я получаю следующий результат

Свидание

2000-12-12 57.69

2000-12-13 57.75

2000-12-14 56.00

2000-12-15 55.00

2000-12-18 54.00

Например. Дата отображается вместе со столбцом «Открыть». И когда я пытаюсь напрямую включить Date следующим образом:

print(data[['Open','Date']]),

он говорит, что Дата не существует как столбец. Итак, у меня есть два вопроса: (1) как сделать дату фактическим столбцом и (2) как выбрать только столбец «Открыть» (и, следовательно, не даты).

заранее спасибо


person MathiasRa    schedule 16.10.2017    source источник


Ответы (1)


Почему print(data['Open']) показывает даты, хотя Date не является столбцом:

quandle.get возвращает Pandas DataFrame, < em>index — это DatetimeIndex. Таким образом, для доступа к датам вы должны использовать data.index вместо data['Date'].


(1) Как сделать дату фактическим столбцом

Если вы хотите превратить DatetimeIndex в столбец, вызовите reset_index:

data = data.reset_index()
print(data[['Open', 'Date']])

(2) Как выбрать только столбец «Открыть» (и, следовательно, не даты)

Чтобы получить массив значений NumPy без индекса, используйте data['Open'].values. (Все серии Pandas и DataFrames имеют Indexs (это смысл существования Pandas!), поэтому единственный способ получить значения без индекса — преобразовать Series или DataFrame в объект другого типа, например массив NumPy.)

person unutbu    schedule 16.10.2017
comment
Спасибо. Могу я задать вам еще один вопрос? Я хотел бы вставить цену в таблицу SQL, и я правильно настроил строку. Но формат по-прежнему не работает. Получение следующей ошибки pyodbc.ProgrammingError: («Неверный тип параметра. param-index=0 param-type=numpy.ndarray», «HY105»). Как мне манипулировать ценой, чтобы я мог вставить ее в таблицу SQL? - person MathiasRa; 17.10.2017
comment
Это похоже на эту ошибку (найдено при поиске в Google pyodbc NumPy array Недопустимый тип параметра). Чтобы избежать этой ошибки, попробуйте преобразовать массив NumPy в список Python, вызвав его tolist() метод: data['Open'].values.tolist(). Если это не решит проблему, задайте один новый вопрос, в котором показана схема таблицы, SQL и код Python, которые вы используете. - person unutbu; 17.10.2017
comment
По сравнению с другим вопросом кажется, что вы пытаетесь вставить весь массив в одну запись таблицы. Чтобы решить эту проблему — если это действительно проблема — было бы полезно сначала просмотреть код SQL и Python. - person unutbu; 17.10.2017
comment
Не знаю, как его отформатировать, но у меня есть только одно значение, используя следующий код: цена = sta[:1] print(price) cur.execute (Вставить в PG (цена) значения (?), цена). Также попробовал sta = data['Open'].values, но это тоже не сработало. Если я просто установлю цену = 55 (в качестве примера), это сработает. - person MathiasRa; 17.10.2017
comment
Я не совсем уверен, что понимаю ситуацию. (Например, значения price и sta, когда вы вызываете cur.execute. И вы получаете одно и то же сообщение об ошибке при каждой попытке!?.) Пожалуйста, опубликуйте новый вопрос со всеми подробностями. - person unutbu; 17.10.2017