Python 3.7中数据帧的嵌套JSON
尝试将嵌套JSON对象转换为所需格式的数据帧时遇到困难。假设这真的很简单,但差点把我的头发扯下来 下面是我的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 } } 在尝试了几个不同的选项后,我
{
"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分钟。