我有一个嵌套的Python字典,我想把它转换成一个关系模型。我正在努力把字典解析成两个相关的表:“workspace”表和“datasets”表-通过关键字workspace_id连接
simplified_dict ={
"workspaces":[
{
"workspace_id":"d507422c",
"workspace_name":"Workspace 1",
"datasets":[
{
"dataset_id":"e7e8a355",
"dataset_name":"Dataset 1 in workspace 1"
},
{
"dataset_id":"bbe8a355",
"dataset_name":"Dataset 2 in workspace 1"
}
]
},
{
"workspace_id":"etyyy422c-8d6d",
"workspace_name":"Workspace 2",
"datasets":[
{
"dataset_id":"89jke8a355",
"dataset_name":"Dataset 3 in Workspace 2"
},
{
"dataset_id":"tyii8a355",
"dataset_name":"Dataset 4 in workspace 2"
}
]
}
],
"datasourceInstances":[
]
}
我可以使用pandas json_normalize函数创建一个包含工作空间信息的表。
import pandas as pd
df_workspaces = pd.json_normalize(simplified_dict, record_path=['workspaces'])
df_workspaces
然而,当我尝试使用相同的函数创建第二个表“datasets”时,我得到了一个 Dataframe ,但它没有工作区键,这允许我连接两个表。
df_datasets_in_workspaces = pd.json_normalize(simplified_dict, record_path=['workspaces','datasets'])
df_datasets_in_workspaces
有没有办法在仍然使用json_normalize函数的情况下,将工作区键添加到this datasets表中以启用连接?
如果可能的话,我更喜欢使用json_normalize的解决方案,而不是使用循环或理解,因为json_normalize允许我轻松地将我的真实的数据的任何层(具有5层嵌套)转换为 Dataframe 。使用我的真实数据集,我将希望生成大约15个表,所以一个低代码,非常直观的方法是首选。
google colab notebook with the code is accessible here的副本
任何帮助都将不胜感激。
1条答案
按热度按时间9o685dep1#
备选方案:
输出: