导入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_json
的orient
参数没有选项,正确地映射到你需要的格式。
但是,您可以结合使用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()