将时间索引添加到来自 google finance 的 pandas 数据框

Adding a time index to a pandas dataframe from google finance

我正在使用 google 财务 api 将数据拉入 pandas 数据框。索引是一个数字,我想将其更改为包含小时和分钟的日期。有任何想法吗?谢谢!

import pandas as pd
api_call = 'http://finance.google.com/finance/getprices?q=SPY&i=300&p=1d&f=d,o,h,l,c,' 
df = pd.read_csv(api_call, skiprows=8, header=None)
df.columns = ['Record', 'Open', 'High', 'Low', 'Close']
df['Record'] = df.index

Record  Open    High    Low Close
0   0   268.19  268.48  268.18  268.46
1   1   268.14  268.23  267.98  268.19
2   2   268.11  268.19  268.06  268.13
3   3   268.05  268.16  267.96  268.11
4   4   267.93  268.1   267.9   268.06
5   5   267.98  268.01  267.89  267.92
6   6   267.95  267.99  267.86  267.97
7   7   267.88  267.95  267.85  267.94
8   8   267.78  267.9   267.78  267.88
9   9   267.94  267.96  267.68  267.78
10  10  267.91  267.95  267.87  267.94

看起来 Pandas 不支持从 Google api 中读取。如果您查看来自 api 的原始响应,它看起来像这样:

EXCHANGE%3DNYSEARCA
MARKET_OPEN_MINUTE=570
MARKET_CLOSE_MINUTE=960
INTERVAL=300
COLUMNS=DATE,CLOSE,HIGH,LOW,OPEN
DATA=
TIMEZONE_OFFSET=-300
a1514557800,268.51,268.55,268.48,268.55
1,268.19,268.48,268.18,268.46
2,268.14,268.23,267.98,268.19
3,268.11,268.19,268.06,268.13

第一个日期时间值(前导 a)是 unix 时间戳。每个后续 "datetime" 实际上是前一行接下来 300 秒的数据(INTERVAL 值)。你需要写一些东西来解析 header 信息,并用它来创建时间戳。