【问题标题】:Parsing JSON data from an API to Pandas将 JSON 数据从 API 解析到 Pandas
【发布时间】:2018-01-28 23:12:33
【问题描述】:

我正在尝试将数据从 api (https://min-api.cryptocompare.com/data/histoday?fsym=BTC&tsym=ETH&limit=30&aggregate=1&e=CCCAGG) 获取到 pandas。 API 以 Json 形式提供数据。

df = pd.read_json('new.json' , orient = 'columns')

错误:将字典与非系列混合可能会导致排序不明确。

我需要的数据:- 图片链接:http://imgur.com/a/bdLN8

我对此真的很陌生,任何帮助都会很棒。

【问题讨论】:

  • 您是否正确下载了您的数据?什么是'new.json'?
  • 你是如何下载 JSON 的?

标签: python json pandas


【解决方案1】:

我认为问题在于您将整个 JSON 传递给 read_json 函数,而您应该只传递存储在 Data 属性中的数据。


如果您以编程方式下载数据,我建议您使用requests

In [422]: import requests

In [416]: data = requests.get('https://min-api.cryptocompare.com/data/histoday?fsym=BTC&tsym=ETH&limit=30&aggregate=1&e=CCCAGG')\
                         .json()['Data']

data 现在是字典,而不是 JSON 字符串。可以调用pd.DataFrame.from_dict函数解析数据,如下:

In [420]: df = pd.DataFrame.from_dict(data)

In [421]: df.head()
Out[421]: 
   close   high    low   open        time  volumefrom   volumeto
0  12.29  11.55  12.73  12.54  1500595200    72064.93  875383.96
1  12.22  11.93  12.61  12.29  1500681600    39624.40  489345.17
2  12.03  11.94  12.37  12.22  1500768000    37270.80  452462.43
3  12.22  11.99  12.36  12.03  1500854400    28582.22  347606.39
4  12.59  12.22  13.03  12.22  1500940800    54004.34  676716.41

如果你坚持使用pd.from_json,那么你必须只传递JSON响应的Data属性中包含的字符串数据,否则将不起作用。

【讨论】:

  • 非常感谢,它有效。只是想知道如何删除第 1 列(0,1,2,3,4..)并随着时间的推移对其进行排序?另外,有什么方法可以编辑 Json 以仅获取 Data 列中的数据,以便我可以使用 'pd.from_json'
猜你喜欢
  • 1970-01-01
  • 2011-05-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-23
  • 2020-01-24
  • 1970-01-01
  • 2017-12-24
相关资源
最近更新 更多