【问题标题】:python pandas dict object is not callable, parsing jsonpython pandas dict对象不可调用,解析json
【发布时间】:2019-01-12 00:53:19
【问题描述】:

Yahoo Finance 弃用 pandas datareader 后,我在更换后搜索了高低。经过一番彻底的谷歌搜索后,我决定必须尝试 Alpha Vantage。

我发现了这个关于如何从 Alpha Vantage 获取股票信息的视频: https://www.youtube.com/watch?v=nipPiiNoqd4

这是我尝试这样做的灵感代码。

import pandas as pd
import datetime
import requests

def dtr_alvan():
    try:
        data=requests.get('https://www.alphavantage.co/query?function=TIME_SERIES_DAILY_ADJUSTED&symbol=MSFT&apikey=demo')
        data=data.json()
        print('\ndata before json parsing:\n',data)

        data=data('Time Series (Daily)')
        df=pd.DataFrame(columns=['date','open','high','low','close','adj_close','volume','dividend amount','split coeffiecient'])
        for d,p in data.items():
            date=datetime.datetime.strptime(d, '%Y-%m-%d %H:%M:%S')
            data_row=[date,float(p['1. open']),float(p['2. high']),float(p['3. low']),float(p['4. close']),float(p['5. adjusted close']),int(p['6. volume']),float(p['7. dividend amount']),float(p['8. split coefficient'])]
            df.loc[-1,:]=data_row
            df.index=df.index+1
        data=df.sort_values('date')
        print('\ndata after json parsing:\n',data)

        return data


    except Exception as e:
        print(str(e))
        pass


if __name__ == '__main__':
    print("== m04_get_stocks == is being run directly\n")

    data = dtr_alvan()

显然我可以获取数据(第一个打印语句),但解析 json 给我错误 dict object is not callable(第二个打印语句未运行,如行 data=data('时间序列(每日)') 代码以错误跳转到错误异常

'dict object is not callable'

任何人都可以帮忙解决这个问题 - 我完全被难住了,需要你们的提示吗?

【问题讨论】:

  • 也许你应该使用括号?字典不可调用(括号)
  • 类似data=data['Time Series (Daily)']

标签: python json pandas parsing stockquotes


【解决方案1】:

这应该放在方括号中而不是 () 中吗?

data=data('Time Series (Daily)')

即您是否尝试访问数据字典中的“时间序列(每日)”键?

如果是这样,请使用:

data = data['Time Series (Daily)']

否则,您会尝试使用参数“时间序列(每日)”调用函数 data()

【讨论】:

    【解决方案2】:

    您收到此错误是因为您尝试将字典作为方法调用。您应该使用第三个括号“[]”访问字典对象的值。

    应该是,data=data['Time Series (Daily)']

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-09-03
      • 2016-03-07
      • 2017-02-11
      • 2020-03-24
      • 2011-10-01
      • 2016-07-07
      • 2012-10-31
      相关资源
      最近更新 更多