Les enregistrements dans le fichier JSON ressembler à ceci (s'il vous plaît noter ce que « nutriments » ressemble):pandas géants python - TypeError lors de l'analyse JSON: indices de chaîne doivent être des entiers
{
"id": 21441,
"description": "KENTUCKY FRIED CHICKEN, Fried Chicken, EXTRA CRISPY,
Wing, meat and skin with breading",
"tags": ["KFC"],
"manufacturer": "Kentucky Fried Chicken",
"group": "Fast Foods",
"portions": [
{
"amount": 1,
"unit": "wing, with skin",
"grams": 68.0
},
...
],
"nutrients": [
{
"value": 20.8,
"units": "g",
"description": "Protein",
"group": "Composition"
},
{'description': 'Total lipid (fat)',
'group': 'Composition',
'units': 'g',
'value': 29.2}
...
]
}
Voici le code de la exercice de livre *. Il comprend quelques empoignades et assemble les éléments nutritifs pour chaque aliment dans une seule table grande:
import pandas as pd
import json
db = pd.read_json("foods-2011-10-03.json")
nutrients = []
for rec in db:
fnuts = pd.DataFrame(rec["nutrients"])
fnuts["id"] = rec["id"]
nutrients.append(fnuts)
Cependant, je reçois l'erreur suivante et je ne peux pas comprendre pourquoi:
TypeError Traceback (most recent call last)
<ipython-input-23-ac63a09efd73> in <module>()
1 for rec in db:
----> 2 fnuts = pd.DataFrame(rec["nutrients"])
3 fnuts["id"] = rec["id"]
4 nutrients.append(fnuts)
5
TypeError: string indices must be integers
* Ceci est un exemple du livre
Votre JSON n'est pas valide (et même quand on corrige les guillemets et supprime les points, il ne peut pas être chargé par 'pd.read_json'). S'il vous plaît soumettre des données, nous pouvons réellement voir votre problème. – Amadan
@Amadan, voici le lien vers les données: https://github.com/wesm/pydata-book/blob/master/ch07/foods-2011-10-03.json –