python - 如何使用python alpha_vantage API 返回扩展的日内数据?

标签 python json alpha-vantage csvreader

我一直在使用 alpha vantage python API现在有一段时间了,但我只需要提取每日和日内时间序列数据。我正在尝试提取扩展的日内数据,但没有任何运气让它工作。尝试运行以下代码:

from alpha_vantage.timeseries import TimeSeries

apiKey = 'MY API KEY'

ts = TimeSeries(key = apiKey, output_format = 'pandas')

totalData, _ = ts.get_intraday_extended(symbol = 'NIO', interval = '15min', slice = 'year1month1')

print(totalData)
给了我以下错误:
Traceback (most recent call last):
  File "/home/pi/Desktop/test.py", line 9, in <module>
    totalData, _ = ts.get_intraday_extended(symbol = 'NIO', interval = '15min', slice = 'year1month1')
  File "/home/pi/.local/lib/python3.7/site-packages/alpha_vantage/alphavantage.py", line 219, in _format_wrapper
    self, *args, **kwargs)
  File "/home/pi/.local/lib/python3.7/site-packages/alpha_vantage/alphavantage.py", line 160, in _call_wrapper
    return self._handle_api_call(url), data_key, meta_data_key
  File "/home/pi/.local/lib/python3.7/site-packages/alpha_vantage/alphavantage.py", line 354, in _handle_api_call
    json_response = response.json()
  File "/usr/lib/python3/dist-packages/requests/models.py", line 889, in json
    self.content.decode(encoding), **kwargs
  File "/usr/lib/python3/dist-packages/simplejson/__init__.py", line 518, in loads
    return _default_decoder.decode(s)
  File "/usr/lib/python3/dist-packages/simplejson/decoder.py", line 370, in decode
    obj, end = self.raw_decode(s)
  File "/usr/lib/python3/dist-packages/simplejson/decoder.py", line 400, in raw_decode
    return self.scan_once(s, idx=_w(s, idx).end())
simplejson.errors.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
有趣的是,如果您查看 TimeSeries class ,它指出延长的日内作为“一个 csv_reader 对象中的时间序列”返回,而对我有用的其他所有内容都作为“两个 json 对象”返回。我 99% 确定这与问题有关,但我不完全确定,因为我认为调用日内扩展函数至少会返回一些东西(尽管它采用不同的格式),但只是给了我一个错误。
另一个有趣的小注意事项是该函数拒绝将“adjusted = True”(或 False)作为输入,尽管它在文档中......可能不相关,但它可能有助于诊断。

最佳答案

好像 TIME_SERIES_INTRADAY_EXTENDED 只能返回 CSV 格式,但是 alpha_vantage 包装器应用了 JSON 方法,这会导致错误。
我的解决方法:

from alpha_vantage.timeseries import TimeSeries
import pandas as pd

apiKey = 'MY API KEY'

ts = TimeSeries(key = apiKey, output_format = 'csv')

#download the csv
totalData = ts.get_intraday_extended(symbol = 'NIO', interval = '15min', slice = 'year1month1')

#csv --> dataframe
df = pd.DataFrame(list(totalData[0]))

#setup of column and index
header_row=0
df.columns = df.iloc[header_row]
df = df.drop(header_row)
df.set_index('time', inplace=True)

#show output
print(df)

关于python - 如何使用python alpha_vantage API 返回扩展的日内数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65622323/

相关文章:

python - Python 中联合多个嵌套 JSON

api - AlphaVantage 的符号后缀

python - 尝试从链接下载视频时出现 403 Forbidden - Python

python - 扭曲的 Python : Max Packet Size? 嵌入式 socket ?

javascript - "this"的正确 JavaScript 使用

json - 在 Go 中加速 JSON 解析

javascript - 如何在键更改的 React 中访问 JSON 对象

stock - Alpha Vantage API 不适用于巴西股票

python - 这种排序有名称吗?它对哪种数据排序有效?

python - 当我按下空格键时在我的鼠标位置画一个圆圈(Pygame)