首页 > 解决方案 > 将 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 列表的数据框,这不是我想要的。

任何帮助和建议将不胜感激。

标签: pythonjsonpandasdataframe

解决方案


'以下是转换 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)

应该返回你想要的。


推荐阅读