将时间索引添加到来自 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 信息,并用它来创建时间戳。
我正在使用 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 信息,并用它来创建时间戳。