使用pandas.read_json()读取单对象JSON文件出现0行×36列异常
解决方法
出现这个问题的核心原因是:pd.read_json() 默认期望JSON数据是数组格式(每个元素对应一行数据),而你的文件里是单个独立的JSON对象,导致pandas把对象的键解析成列名,但没有识别出对应的行数据,最终生成0行36列的DataFrame。
下面是几种可行的解决办法:
方法1:修改JSON文件结构
把单个JSON对象包裹进数组中,修改后的文件内容如下:
[ { "created_at": "Sat Apr 14 11:15:29 +0000 2012", "description": "Pemerhati sospol hukum dan ekonomi", "is_translator": false, "can_media_tag": true, "pinned_tweet_ids_str": [] } ]
之后直接用pd.read_json('your_file.json')读取,就能得到1行36列的DataFrame。
方法2:调整read_json的参数
使用orient='index'参数读取,再转置成需要的格式:
import pandas as pd df = pd.read_json('your_file.json', orient='index').T
orient='index'会把JSON对象的键当作行索引,转置后就能将键转为列、值转为行数据。
方法3:先加载JSON对象再构造DataFrame
借助json模块先读取单个对象,再手动包装成数组传入DataFrame构造函数:
import json import pandas as pd with open('your_file.json', 'r', encoding='utf-8') as f: data = json.load(f) df = pd.DataFrame([data])
内容的提问来源于stack exchange,提问作者Nabih Bawazir
相关产品推荐
相关产品推荐

