我正在尝试创建一个 pandas 数据框形式的 json 文件。我已经看到了这个问题的多种解决方案,它们使用内置函数 from_dict/json_normalize 但我无法将其应用到我的代码中。以下是我的数据在 json 文件中的结构:
"data": [
{
"groups": {
"data": [
{
"group": "Math",
"year_joined": "2009"
},
{
"group_name": "History",
"year_joined": "2011"
},
{
"group_name": "Biology",
"year_joined": "2010"
}
]
},
"id": "12512"
},
当我尝试使用 pandas 函数标准化这些数据时,如下所示:
path = 'mypath'
f = open(path)
data = json.load(f)
test = pd.json_normalize(
data['data'],
errors='ignore')
我刚刚收到这样的东西:
id groups.data
0 12512 [{'group_name': 'Math', 'year_joined': '2009', 'gr...
1 23172 [{'group_name': 'Chemistry', 'year_joined': '2005'...
我希望这些数据看起来像这样(解决方案 1):
id group year_joined
0 12512 group1 year1
1 12512 group2 year2
2 12512 group3 year3
或者像这样(解决方案2):
id group year_joined
0 12512 group1,group2,group3 year1,year2,year3
1 23172 group4,group5 year4,year5
我怎样才能实现它?我尝试将“record_path”参数传递给“json_normalize”函数,但它没有改变任何内容。我尝试使用“DataFrame.from_dict”函数来解决此问题,但失败了。我能够获得解决方案 1 的唯一方法是创建多个循环,迭代 json 文件中的所有内容并将其添加到单独的列表中。它有点有效,但在更大的数据集上需要花费很多时间。
我如何使用内置的 pandas 工具来处理如上所述作为字典嵌套在文件第三层中的文件?