2017-04-03 137 views
1

我試圖導入表中以下鏈接: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命令中執行此操作?

回答

1

我不認爲這是可能的,因爲的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 
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()