J'essaye d'importer le tableau dans le lien suivant: https: //graphs.coinmarketcap. com / v1 / datapoints / bitcoin /

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

Me donne ce qui suit:

  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]  

Les valeurs en première position des listes sont des horodatages que je veux être l'index du DataFrame. par exemple. [horodatage, valeur]

Est-il possible de le faire dans la commande pd.read_json?

1
measure_theory 3 avril 2017 à 19:24

2 réponses

Meilleure réponse

Je ne pense pas que ce soit possible car le paramètre orient de pd.read_json n'a pas d'option qui correspond correctement à votre format requis.

Cependant, vous pouvez utiliser requests en conjonction avec une petite compréhension de dictionnaire ici:

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
1
pansen 3 avril 2017 à 17:14

Essaye ça.

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()
0
âńōŋŷXmoůŜ 3 avril 2017 à 21:30