python - 将 json 嵌套到 pandas 数据框
问题描述
我有一个嵌套的 JSON 文件,我将它展平并得到一个看起来像这样的列表;
[{patient_0_order: 1234,
patient_0_id: a1,
patient_0_time: 01/01/2016,
patient_0_desc: xyz,
patient_1_order: 2313,
patient_1_id: b1,
patient_1_time: 02/01/2016,
patient_1_desc: def,
patient_2_order: 9876,
patient_2_id: c1,
patient_2_time: 03/01/2016,
patient_2_desc: ghi,
patient_3_order: 0075,
patient_3_id: d1,
patient_3_time: 04/01/2016,
patient_3_desc: klm,
patient_4_order: 6268,
patient_4_id: e1,
patient_4_time: 05/01/2016,
patient_4_desc: pqr}`]
现在我想将列表转换为一个数据框,这样每一行就需要一个病人,如下所示。
patient_order patient_id patient_time patient_desc
0 1234 a1 01/01/2016 xyz
1 2313 b1 02/01/2016 def
2 9876 c1 03/01/2016 ghi
3 0075 d1 04/01/2016 klm
4 6268 e1 05/01/2016 pqr
我尝试使用pandas.DataFrame(list)
它,它给了我一个包含 1 行 * 20 列表的数据框,这不是我想要的。
任何帮助和建议将不胜感激。
解决方案
'以下是转换 json 对象(字典)的方法:
old_dict = json.loads('YOUR JSON STRING')[0]
col_names = ['order', 'id', 'time', 'desc']
# Reorganize the dictionary.
new_dict = {col: {k: v for k, v in old_dict.iteritems() if col in k} for col in col_names}
df = pd.DataFrame(new_dict)
应该返回你想要的。
推荐阅读
- qt - Qml StackView 推送转换不起作用
- vba - DOMDocument 未加载
- python - 如何根据上述行的值添加新列
- localization - 我们可以使用 moment.js 支持数字本地化吗
- asp.net-core - 使用 UseStatusCodePagesWithReExecute 并显示消息未按预期工作
- c# - 将 XAML 窗口转换为位图
- mysql - mysql 根据输入在列中查找最“真”的行
- appium-android - 无法使用 bat 文件启动 appium 1.9.0
- java - Java http代理SocketException:来自服务器连接重置的文件意外结束
- cassandra - 如何在 cassandra 流式传输时增加每个主机的连接