将JSON数据从API解析为Pandas

时间:2017-08-20 23:17:20

标签: python json pandas

我正在尝试从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')

错误:将dicts与非系列混合可能会导致模糊排序。

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

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

1 个答案:

答案 0 :(得分:2)

我认为问题在于,当您只应传递read_json属性中存储的数据时,您将整个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属性中包含的字符串数据,否则它将无效。