我很难读取结构与以前不同的json文件。 json文件的内容都放在方括号内:[{content}]。
这是我通常要做的:
data_dir = 'data/filesDump'
filenames = os.listdir(data_dir)
filenames = [os.path.join(data_dir, f) for f in filenames if f.endswith('.json')]
train_df = pd.concat([pd.read_json(file, encoding='UTF-8') for file in filenames],
ignore_index = True)
我收到此错误:
ValueError:预期的对象或值
与我得到的数千个json唯一不同的是,内容位于方括号[]中。所以我怀疑这给json_read一个问题?有人知道如何加载这种格式吗?
示例(我可能在括号中犯了一个错误,但这只是一个想法):
[{“ id”:“ value”,“ title”:“ value”,“ body”:“ text”,“ categories”:[{“ id”:value,“ name”:“ name”,“ keys“:[{” id“:value,” hits“:[” word1“,” word2“]},{” id“:value,” hits“:[” word1“,” word2“]}]],”日期”:值}]
答案 0 :(得分:0)
并非所有JSON文件都可以转换为DataFrame,需要特定格式。
您首先应该使用标准json模块将JSON文件转换为Python结构,然后可以修改结构以符合DataFrame构造函数要求。
例如,如果您的JSON在制作DataFrame所需的常用字典的旁边有一个额外的括号,则意味着数据包含在列表中,并由@Atreus表示,您可以通过仅获取列表的第一个元素来将其删除:
import json
struct=json.loads('[{"A":{"0":1,"1":2,"2":3},"B":{"0":4,"1":5,"2":6}}]')
print pd.DataFrame(struct[0])
输出:
A B
0 1 4
1 2 5
2 3 6
答案 1 :(得分:0)
因此,事实证明,我确实需要像manu所指的那样使用json.loads,但要注意以下几点:
json.load(open(file, encoding='utf-8-sig'))