You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Pandas read_json加载单行多列JSON报错,求解决方案

解决单行JSON加载到Pandas DataFrame的报错问题

嘿,这个问题我之前处理过,太典型了!咱们先搞清楚为啥会报错:你调用pd.read_json()加载的是一个纯键值对结构的单行JSON(所有值都是标量,没有数组或嵌套对象),Pandas默认没法直接把这种结构映射成DataFrame——它不知道该把这些键当成行索引还是列名,所以就抛出了ValueError: If using all scalar values, you must pass an index这个错误。

给你几个简单的解决方案,挑你顺手的用就行:

方案1:给read_json指定orient参数并转置

直接在read_json里加上orient='index',告诉Pandas把JSON的键作为行索引,然后用.T转置成我们需要的列结构:

import pandas as pd

url_global = 'https://api.coinmarketcap.com/v1/global/'
df_global = pd.read_json(url_global, orient='index').T

方案2:先把JSON转成字典,再用列表包裹后生成DataFrame

先通过请求获取JSON字典,然后把这个字典放进一个列表里——这样Pandas就会自动识别这是一行数据,直接生成带列名的DataFrame:

import pandas as pd
import requests

url_global = 'https://api.coinmarketcap.com/v1/global/'
# 先获取JSON数据转成字典
data_dict = requests.get(url_global).json()
# 把字典放进列表,生成DataFrame
df_global = pd.DataFrame([data_dict])

方案3:手动指定索引(原理参考用)

如果非要用原始的read_json方式,你可以手动给Pandas传一个索引,比如:

import pandas as pd

url_global = 'https://api.coinmarketcap.com/v1/global/'
df_global = pd.read_json(url_global, index=[0])

不过这个方法不如前两种直观,一般更推荐前两种。

试一下上面的方法,你就能顺利得到7列1行的DataFrame啦!

内容的提问来源于stack exchange,提问作者coding404

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 06:52:20