Python 3.7中数据帧的嵌套JSON

Python 3.7中数据帧的嵌套JSON,python,json,pandas,dataframe,pivot,Python,Json,Pandas,Dataframe,Pivot,尝试将嵌套JSON对象转换为所需格式的数据帧时遇到困难。假设这真的很简单,但差点把我的头发扯下来 下面是我的JSON结构的一个示例 { "recipe1" : { "abbie" : 2, "ben" : 3, "chris" : 1 }, "recipe2" : { "abbie" : 1, "ben" : 5, "chris" : 5 } } 在尝试了几个不同的选项后,我

尝试将嵌套JSON对象转换为所需格式的数据帧时遇到困难。假设这真的很简单,但差点把我的头发扯下来

下面是我的JSON结构的一个示例

{
  "recipe1" : {
       "abbie" : 2,
       "ben" : 3,
       "chris" : 1
       },
  "recipe2" : {
       "abbie" : 1,
       "ben" : 5,
       "chris" : 5
       }
}
在尝试了几个不同的选项后,我决定使用pandas库,因为它似乎是最容易使用的

本例中的结果是对我的数据库进行查询,获取我设法工作的JSON数据

 dataframe = json_normalize(result)
 print(dataframe) 
在一行中为我提供以下信息:

 recipe1.abbie | recipe1.ben | recipe1.chris | recipe2.abbie | ..
      2        |      3      |       1       |       1       | ..
虽然理想情况下,我希望数据帧如下所示:

               |   Recipe 1  |   Recipe 2    |  
  Abbie        |      2      |       1       |
  Ben          |      3      |       5       |
  Chris        |      1      |       5       |
在浏览了这个网站和其他地方之后,我相信Pivot功能是我需要使用的,但是在尝试了整个上午之后,不幸的是,我没有接近解决方案

提前感谢您的帮助,非常感谢。

使用即可

frame = pd.DataFrame.from_records(data)
您正在使用的normalize会将字典展平并创建一个系列。

只需使用

frame = pd.DataFrame.from_records(data)

您正在使用的normalize会将字典展平并创建一个系列。

您可以使用
pd.read_json
并传递
orient=records
(这是默认设置)来读取“filename”或文件缓冲区中的json文件

>>> import pandas as pd
>>> df = pd.read_json("sample.json", orient="records")
>>> df
       recipe1  recipe2
abbie        2        1
ben          3        5
chris        1        5

中阅读更多内容您可以使用pd.Read_json并传递
orient=records
(默认设置)以“文件名”或文件缓冲区读取json文件

>>> import pandas as pd
>>> df = pd.read_json("sample.json", orient="records")
>>> df
       recipe1  recipe2
abbie        2        1
ben          3        5
chris        1        5

中阅读更多信息,我想您的json会继续使用“recipe3”等等? 除了艾比、本和克里斯还有其他人吗


在任何情况下,我怀疑你能得到你想要的,而不是通过循环数据和格式化它。我还假设您最初获得的数据是一个数组,您应该从该数组开始工作。如果不了解更多关于您的数据库结构以及您可能使用的数据,我将无法进一步帮助您。

我假设您的json继续使用“recipe3”等等? 除了艾比、本和克里斯还有其他人吗


在任何情况下,我怀疑你能得到你想要的,而不是通过循环数据和格式化它。我还假设您最初获得的数据是一个数组,您应该从该数组开始工作。如果不了解更多关于数据库结构的信息以及可能使用的数据,我将无法进一步帮助您。

现在我觉得自己很笨!谢谢你。我会马上接受你的回答,显然我需要等7分钟。好吧,现在我觉得自己很傻!谢谢你。我会马上接受你的回答,显然我需要等7分钟。