如何管理多层字典,自定义列,减去列数据并添加新列?

时间:2019-07-18 02:12:47

标签: python python-3.x pandas

非常感谢您的帮助!

我正在从Alphavantage进行json拉取。我正在尝试:

  1. 将json数据转换为Pandas数据框
  2. 获取正确的数据以正确显示
  3. 自定义列标签(“打开”,“高”,“低”,“关闭”,“音量”)
  4. 从“打开”列中的数据中减去“关闭”列中的数据
  5. 使用上面第4个数据创建一个名为“ Net”的新列

我真是个菜鸟。这实际上是我的第一个实际项目,也是第一次在这里发布。我还在学习和尝试。我敢肯定,有一种更轻松的方式来做我正在做的事情。我花了无数的时间进行研究并试图找出答案。这是我到目前为止的内容:

import pandas as pd
import requests as rq

pull_type = 'TIME_SERIES_DAILY'
symbol = 'GOOG'
size = 'compact'
data_type = 'json'
api_key = 'XXX_MY_KEY_XXX'
url = 'https://www.alphavantage.co/query?'
pull_parameters = {
    'function': pull_type,
    'symbol': symbol,
    'outputsize': size,
    'datatype': data_type,
    'apikey': api_key
}

pull = rq.get(url, params=pull_parameters)

data = pull.json()

df = pd.DataFrame.from_dict(data['Time Series (Daily)'], orient='index')

df.columns = ['Open', 'High', 'Low', 'Close', 'Volume']

df.index = pd.to_datetime(df.index)

day_net = df['Open'] - df['Close']

print(day_net)

我收到了很多异常错误。太多了,无法列出。仍在学习它们的全部含义。任何意见和指示都将受到欢迎和赞赏。谢谢!

2 个答案:

答案 0 :(得分:1)

尝试更改此行:

adam 20
robert null
jacob null

收件人:

df = pd.DataFrame.from_dict(data['Time Series (Daily)'], orient='index')

答案 1 :(得分:0)

所以我知道这已经回答了,但是我也想让您参与其中!

您还可以使用开源python包装器: https://github.com/RomelTorres/alpha_vantage

从终端运行:

pip install alpha_vantage

然后您可以将代码设为:

import alpha_vantage
from alpha_vantage.timeseries import TimeSeries

ts = TimeSeries(key=<key>, output_format='pandas')
data, meta_data = ts.get_daily(symbol='GOOG', outputsize='full')
# data is the DataFrame and meta_data is a dict

文档和存储库为here