【问题标题】:How do I convert indices in json to int?如何将 json 中的索引转换为 int?
【发布时间】:2020-09-22 10:10:08
【问题描述】:

我正在尝试根据日期绘制此 json 中的数据。如何将“created_at”日期转换为数据框的 int?获取 TypeError:列表索引必须是整数或切片,而不是 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'},......

【问题讨论】:

  • 请使用完整的错误回溯更新您的问题。
  • int 类呢?
  • prices 看起来是一个字典列表,因此您将遍历以提取每个元素的 created_at

标签: python json pandas


【解决方案1】:

这是一个存在于列表中的字典:

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']

【讨论】:

    【解决方案2】:

    让我给你一个轻微的修正。 首先你可以得到datesprices如下

    dates = [item['created_at'] for item in data['data']['prices']]
    values = [item['price'] for item in data['data']['prices']]
    

    其他的应该如你所愿。

    【讨论】:

      猜你喜欢
      • 2018-07-09
      • 2016-04-26
      • 1970-01-01
      • 2017-06-30
      • 1970-01-01
      • 1970-01-01
      • 2014-05-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多