Créer un DataFrame Pandas à partir de JSON profondément imbriqué

Je suis en train de créer un seul Pandas DataFrame objet à partir d'une profondément imbriqués chaîne JSON.

Le JSON schéma est:

{"intervals": [
{
pivots: "Jane Smith",
"series": [
    {
        "interval_id": 0,
        "p_value": 1
       },
     {
         "interval_id": 1,
         "p_value": 1.1162791357932633e-8
     },
   {
        "interval_id": 2,
        "p_value": 0.0000028675012051504467
     }
    ],
   },
  {

"pivots": "Bob Smith",
  "series": [
       {
            "interval_id": 0,
            "p_value": 1
           },
         {
             "interval_id": 1,
            "p_value": 1.1162791357932633e-8
         },
       {
            "interval_id": 2,
            "p_value": 0.0000028675012051504467
         }
       ]
     }
    ]
 }

Résultat souhaité j'ai besoin d'aplatir cette à produire un tableau:

Actor Interval_id Interval_id Interval_id ... 
Jane Smith      1         1.1162        0.00000 ... 
Bob Smith       1         1.1162        0.00000 ... 

La première colonne est la Pivots valeurs, et les autres colonnes sont les valeurs des clés interval_id et p_value stockées dans la liste series.

Jusqu'à présent, j'ai

import requests as r
import pandas as pd
actor_data = r.get("url/to/data").json['data']['intervals']
df = pd.DataFrame(actor_data)

actor_data est une liste où la longueur est égale au nombre d'individus ie pivots.values(). Le df de l'objet renvoie simplement

<bound method DataFrame.describe of  pivots             Series
0           Jane Smith  [{u'p_value': 1.0, u'interval_id': 0}, {u'p_va...
1           Bob Smith  [{u'p_value': 1.0, u'interval_id': 0}, {u'p_va...
.
.
.

Comment puis-je parcourir que series liste pour obtenir le dict de valeurs et de créer des N colonnes distinctes? Devrais-je essayer de créer un DataFrame pour la series liste, à revoir,et puis faire une colonne lier avec l'acteur noms?

Mise à JOUR:

pvalue_list = [i['p_value'] for i in json_data['series']]

cela me donne une liste de listes. Maintenant, j'ai besoin de comprendre comment ajouter chaque liste comme une ligne dans un DataFrame.

value_list = []
for i in pvalue_list:
    pvs = [j['p_value'] for j in i]
    value_list = value_list.append(pvs)
return value_list

Cela renvoie une NoneType

Solution

def get_hypthesis_data():
    raw_data = r.get("/url/to/data").json()['data']
    actor_dict = {}
    for actor_series in raw_data['intervals']:
        actor = actor_series['pivots']
        p_values = []
        for interval in actor_series['series']:
            p_values.append(interval['p_value'])
        actor_dict[actor] = p_values
    return pd.DataFrame(actor_dict).T

Ceci renvoie à la bonne DataFrame. J'ai transposé-il si les individus ont été les lignes et pas de colonnes.

source d'informationauteur idclark