python pandas dict 对象不可调用,正在解析 json
python pandas dict object is not callable, parsing json
在 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 (second print statement is not 运行, as in the line
数据=数据('Time Series (Daily)')
代码跳转到错误异常
'dict object is not callable'
谁能帮忙解决这个问题 - 我完全被难住了,需要你们的提示吗?
您收到此错误是因为您试图将字典作为一种方法来调用。您应该使用第三个括号“[]”访问字典对象的值。
应该是,data=data['Time Series (Daily)']
这应该放在方括号中而不是 () 中吗?
data=data('Time Series (Daily)')
即您是否正在尝试访问数据字典中的密钥 'Time Series (Daily)'?
如果是这样,使用:
data = data['Time Series (Daily)']
否则您将尝试使用参数 'Time Series (Daily)'
调用函数 data()
在 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 (second print statement is not 运行, as in the line 数据=数据('Time Series (Daily)') 代码跳转到错误异常
'dict object is not callable'
谁能帮忙解决这个问题 - 我完全被难住了,需要你们的提示吗?
您收到此错误是因为您试图将字典作为一种方法来调用。您应该使用第三个括号“[]”访问字典对象的值。
应该是,data=data['Time Series (Daily)']
这应该放在方括号中而不是 () 中吗?
data=data('Time Series (Daily)')
即您是否正在尝试访问数据字典中的密钥 'Time Series (Daily)'?
如果是这样,使用:
data = data['Time Series (Daily)']
否则您将尝试使用参数 'Time Series (Daily)'
调用函数 data()