如何将 json 中的索引转换为 int?

我正在尝试根据日期绘制此 json 中的数据。如何将数据框的“created_at”日期转换为 int?获取类型错误:列表索引必须是整数或切片,而不是 str


import requests

import pandas as pd

import datetime

import matplotlib.pyplot as plt

%matplotlib inline


url = 'https://api.oilpriceapi.com/v1/prices/past_week'

headers = {

'Authorization': 'Token XXXXXXXXXXX',

'Content-Type': 'application/json'}


response = requests.get(url = url, headers = headers)

data = response.json()

print(data)


dates = (data['data']['prices']['created_at'])

values = (data['data']['prices']['price'])


df = pd.DataFrame({'dates':dates, 'values':values})

df['dates']  = [pd.to_datetime(i) for i in df['dates']]


plt.line(dates, values)

错误:


TypeError                                 Traceback (most recent call last)

<ipython-input-9-db4fdff870ee> in <module>()

     14 print(data)

     15 

---> 16 dates = (data['data']['prices']['created_at'])

     17 values = (data['data']['prices']['price'])

     18 


TypeError: list indices must be integers or slices, not str

JSON:


{'status': 'success', 'data': {'prices': [{'price': 32.5, 'formatted': '$32.50', 'currency': 'USD', 'code': 'BRENT_CRUDE_USD', 'created_at': '2020-05-27T16:04:00.466Z', 'type': 'spot_price'},......


慕虎7371278
浏览 95回答 2
2回答

MYYA

让我给你一个轻微的修正。首先你可以得到dates和prices如下dates = [item['created_at'] for item in data['data']['prices']]values = [item['price'] for item in data['data']['prices']]其他应该按您的预期工作。

qq_笑_17

这是列表中的字典:data['data']['prices']>>[{'price': 32.5,'formatted': '$32.50','currency': 'USD','code': 'BRENT_CRUDE_USD','created_at': '2020-05-27T16:04:00.466Z','type': 'spot_price'}]因此尝试data['data']['prices'][0]['created_at']
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python