在熊猫中读取嵌套的json

时间:2020-04-16 15:00:09

标签: python-3.x pandas pandas-groupby

我正在尝试将嵌套的json数据读取到pandas数据框中。使用以下代码:

  "alpha" should " have two decimal numbers after comma" in {
    val alpha = readAlpha
    //assert(alpha == (f"$alpha%.2f"))
  }

以下输出:

deptdata = json.loads(data)
print(pd.DataFrame(json_normalize(deptdata)))

如果我使用 dept branchData 0 Mechanical [{'branch': 'abc', 'sale': 12}] 1 Civil [{'branch': 'xyz', 'sale': 18}] ,我会得到

pd.DataFrame(json_normalize(deptdata, record_path="branchData"))

但是我丢失了部门细节。如何同时获取dept和branchData和groupby dept和branch?

1 个答案:

答案 0 :(得分:0)

您可以通过几种方法做到这一点,首先,我将在单独的数据帧中读取两个json,如果索引匹配,则将concat读取。

如果这不起作用,并且您的第一个输入与上面的匹配,我们可以在ast模块literal_eval的熊猫中使用一些字符串方法,将您的字符串对象作为字典读取并解析出来。

from ast import literal eval
df1 = pd.concat([df[['dept']], 
           df['branchData'].replace({'\[' : '', '\]' : ''} 
          ,regex=True).map(literal_eval).apply(pd.Series)],axis=1)

print(df1)

         dept branch  sale
0  Mechanical    abc    12
1       Civil    xyz    18