导入JSON成熊猫数据帧

问题描述:

我试图导入表中以下链接:https://graphs.coinmarketcap.com/v1/datapoints/bitcoin/导入JSON成熊猫数据帧

pd.read_json('https://graphs.coinmarketcap.com/v1/datapoints/bitcoin/').head() 

给了我下面的:

market_cap_by_available_supply    price_btc \ 
0 [1367174841000, 1500517590] [1367174841000, 1.0] 
1 [1367261101000, 1575032004] [1367261101000, 1.0] 
2 [1367347502000, 1501657492] [1367347502000, 1.0] 
3 [1367433902000, 1298951550] [1367433902000, 1.0] 
4 [1367522401000, 1148667722] [1367522401000, 1.0] 

       price_usd   volume_usd 
0 [1367174841000, 135.3] [1367174841000, 0.0] 
1 [1367261101000, 141.96] [1367261101000, 0.0] 
2 [1367347502000, 135.3] [1367347502000, 0.0] 
3 [1367433902000, 117.0] [1367433902000, 0.0] 
4 [1367522401000, 103.43] [1367522401000, 0.0] 

在列表中的第一个位置的值是我想成为DataFrame的索引的时间戳。例如[时间戳,值]

有没有办法在pd.read_json命令中执行此操作?

我不认为这是可能的,因为的pd.read_jsonorient参数没有选项,正确地映射到你需要的格式。

但是,您可以结合使用requests有一个小小的字典理解这里:

import requests 

url = 'https://graphs.coinmarketcap.com/v1/datapoints/bitcoin/' 
json = requests.get(url).json() 
df = pd.DataFrame({col: dict(vals) for col, vals in json.items()}) 

print(df.head()) 

       market_cap_by_available_supply price_btc price_usd volume_usd 
1367174841000 1500517590      1.0   135.30  0.0 
1367261101000 1575032004      1.0   141.96  0.0 
1367347502000 1501657492      1.0   135.30  0.0 
1367433902000 1298951550      1.0   117.00  0.0 
1367522401000 1148667722      1.0   103.43  0.0 

试试这个。

import pandas as pd 
df = pd.read_json('https://graphs.coinmarketcap.com/v1/datapoints/bitcoin/') 
df = pd.DataFrame([df[df.columns[0]][i][0] for i in range(len(df))]).join(df) 
df = df.set_index(df.columns[0]) 
df.index.rename('timestamp', inplace=True) 
df.head()