python - Pandas:json多个文件并以奇怪的格式连接
问题描述
我很难阅读结构与以往不同的 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"]}],"date":价值}]
解决方案
并非所有 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
推荐阅读
- sql-server - 如何从两个不同的“发件人”地址发送 SSRS 报告?
- javascript - Google Chrome 版本 71.0.3573.0 上的“onChange”问题
- c# - Mysql 实体框架 Visual Studio 2017
- excel - 将 Excel 工作表导出为 pdf
- react-native - Expo Fingerprint API 在 Android 设备中无法正常工作。
- docker - 无法访问 docker 容器内的目录
- r - 用R中的另一个变量索引一个变量
- php - 我的注册和登录控制器不工作(Codeigniter)
- java - 比较数组 - 方法中的累加器不会增加
- scala - Spark DataFrame - 如何根据条件对数据进行分区