首页 > 解决方案 > 将 json 文件转换为 dataframe 解析嵌套的 json 数据

问题描述

下面是我的json结构

{"status":"success","data":{"resultType":"matrix","result":[{"metric":{"env":"allahabad","instance":"10.45.69"},"values":[[16080,"79.03999999999844"],[1608,"85.866666666668"]}}

以上所有json都在单行中

我想把它转换成数据框,就像

data__result__metric__env|data__result__metric__instance|data__result__values__001|data__result__values__002
 allahabad               |10.45.69           |16080                |79.03999999999844

标签: pythonjsondataframe

解决方案


正如我在评论中提到的,我并不完全清楚您的预期输出应该是什么样子。我假设您正在寻找 2-value-columns 解决方案。

使用您的 json 数据(在我看来,您的示例中缺少一些右括号\括号)

json_data = {"status":"success","data":{"resultType":"matrix","result":[{"metric":{"env":"allahabad","instance":"10.45.69"},"values":[[16080,"79.03999999999844"]]]}]}}

这个

data = json_data['data']['result'][0]
df_data = {f'data__result__metric__{key}': [value] * len(data['values'])
           for key, value in data['metric'].items()}
df_data.update((f'data__result__values__00{i + 1}', values)
               for i, values in enumerate(zip(*data['values'])))
df = pd.DataFrame(df_data)

为您提供以下数据框df

   data__result__metric__env data__result__metric__instance  \
0                  allahabad              10.45.69  
1                  allahabad              10.45.69  
2                  allahabad              10.45.69  
...
13                 allahabad              10.45.69   

    data__result__values__001 data__result__values__002  
0                  16080         79.03999999999844  
1                  16080           85.866666666668  
2                  16080           85.866666666668  
...
13                 16080         82.21000000000095  

推荐阅读