2017-04-03 7 views
1

にJSONのインポート:https://graphs.coinmarketcap.com/v1/datapoints/bitcoin/私は次のリンクでテーブルをインポートしようとしているパンダDATAFRAME

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パラメータが正しく必要な形式にマップnoオプションを持っていないので、それが可能だとは思いません。

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 

しかし、あなたはここで小さな辞書の理解と一緒にrequestsを使用することができます

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() 
関連する問題