J'utilise un REST API
pour obtenir un fichier json
comme suit:
import urllib2
import pandas as pd
import numpy as np
import requests
request='myrequest'
data= requests.get(request)
json=data.json()
df=pd.DataFrame(json)
et la trame de données ressemble
items
0 {u'access': u'all', u'count': 501, u'time': 2014}
1 {u'access': u'all', u'count': 381, u'time': 2015}
Comment puis-je transformer cette seule colonne (qui ressemble à un dictionnaire) en colonnes appropriées dans Pandas?
ÉDITER
les données brutes json ressemblent à ceci
{
"items": [
{
"access": "all",
"count": 200,
"time": 2015
},
{
"access": "all",
"count": 14,
"time": 2015
},
]
}
Merci!
pd.read_json(json_str)
Voici la documentation Pandas .
MODIFIER:
Pour une liste de json str, vous pouvez également:
import json
import pandas as pd
df = pd.DataFrame.from_records(map(json.loads, json_lst))
Eh bien, il me semble que JSON importe dans l'imbrication contenant toutes les variations de dict et de liste, tandis que Pandas nécessite une seule collection de dict avec des éléments itérables. Vous devez donc faire un peu de conversion si ils ne correspondent pas.
En supposant que j'interprète correctement la structure de votre JSON (et peut-être pas depuis, vous n'imprimez que le produit final, pas la structure JSON), il semble que ce soit une liste de dictionnaires. Si tel est le cas, voici la solution:
data = {k:[v] for k,v in json[0].items()}
for jso in json[1:]:
for k,v in jso.items():
data[k].append(v)
df = pd.DataFrame(data)
Éditer:
Des valeurs sont fournies, pour faire fonctionner mon code, vous avez juste besoin des éléments suivants devant:
json = json["items"]
Je pense que cela devrait fonctionner, mais cela dépend de la façon dont les requêtes traitent JSON. Donnez-moi une impression de l'objet json
si cela ne fonctionne pas.