私はGitHibに現在の問題を追加しました。レポのURLを見つけてください。私は問題を説明しているJupyterノートブックを添付しました。みんなありがとう。パンダのデータフレームにネストされたJSONデータを表示
https://github.com/simongraham/dataExplore.git
私は現在、データは生のJSON形式であるプロジェクトのための栄養データで働いている、と私は理解しやすいデータフレームを取得するためのpythonとパンダを使用します。 JSONがネストされていない場合、これは簡単な作業であると私は理解しています。ここで私は使用します:
nutrition = pd.read_json('data')
しかし、私はネストされた情報を持っていますが、それは合理的なデータフレームに取得することは非常に困難です。 JSON形式は、nutritionNutrients要素自体が入れ子要素である次のとおりです。この要素の巣はアルコールやbcfaなどのさまざまなものの栄養成分を記述します。これは大きなデータファイルであるため、サンプルを追加しただけです。
[
{
"vcNutritionPortionId": "478d1905-f264-4d9b-ab76-0ed4252193fd",
"vcNutritionId": "2476378b-79ee-4857-a81d-489661a039a1",
"vcUserId": "cc51145b-5a70-4344-9b55-1a4455f0a9d2",
"vcPortionId": "1",
"vcPortionName": "1 average pepper",
"vcPortionSize": "20",
"ftEnergyKcal": 5.2,
"vcPortionUnit": "g",
"dtConsumedDate": "2016-05-04T00:00:00",
"nutritionNutrients": [
{
"vcNutritionPortionId": "478d1905-f264-4d9b-ab76-0ed4252193fd",
"vcNutrient": "alcohol",
"ftValue": 0,
"vcUnit": "g",
"nPercentRI": 0,
"vcTrafficLight": ""
},
{
"vcNutritionPortionId": "478d1905-f264-4d9b-ab76-0ed4252193fd",
"vcNutrient": "bcfa",
"ftValue": 0,
"vcUnit": "g",
"nPercentRI": 0,
"vcTrafficLight": ""
},
{
"vcNutritionPortionId": "478d1905-f264-4d9b-ab76-0ed4252193fd",
"vcNutrient": "biotin",
"ftValue": 0,
"vcUnit": "µg",
"nPercentRI": 0,
"vcTrafficLight": ""
},
...
]
}
]
助けてください。
ありがとうございました。
.... ....
今私はjson_normalizeを使用してこの問題を解決する方法を発見したことを、私は同じ問題を返しますが、この時間は私のコードを二回ネストされています。すなわち:
[
{
...
}
[,
"nutritionPortions": [
{
"vcNutritionPortionId": "478d1905-f264-4d9b-ab76-0ed4252193fd",
"vcNutritionId": "2476378b-79ee-4857-a81d-489661a039a1",
"vcUserId": "cc51145b-5a70-4344-9b55-1a4455f0a9d2",
"vcPortionId": "1",
"vcPortionName": "1 average pepper",
"vcPortionSize": "20",
"ftEnergyKcal": 5.2,
"vcPortionUnit": "g",
"dtConsumedDate": "2016-05-04T00:00:00",
"nutritionNutrients": [
{
"vcNutritionPortionId": "478d1905-f264-4d9b-ab76-0ed4252193fd",
"vcNutrient": "alcohol",
"ftValue": 0,
"vcUnit": "g",
"nPercentRI": 0,
"vcTrafficLight": ""
},
{
"vcNutritionPortionId": "478d1905-f264-4d9b-ab76-0ed4252193fd",
"vcNutrient": "bcfa",
"ftValue": 0,
"vcUnit": "g",
"nPercentRI": 0,
"vcTrafficLight": ""
},
{
"vcNutritionPortionId": "478d1905-f264-4d9b-ab76-0ed4252193fd",
"vcNutrient": "biotin",
"ftValue": 0,
"vcUnit": "µg",
"nPercentRI": 0,
"vcTrafficLight": ""
},
...
}
]
}
]
私は私が使用できる唯一の栄養データからなるJSONを持っている:
nutrition = (pd.io
.json
.json_normalize((data, ['nutritionPortions']), 'nutritionNutrients',
['vcNutritionId','vcUserId','vcPortionId','vcPortionName','vcPortionSize',
'ftEnergyKcal','vcPortionUnit','dtConsumedDate'])
)
しかし、私のデータは栄養情報をだけでなく、含まれていません。たとえば、アクティビティ情報が含まれるため、栄養情報は最初に「nutrtitionPortions」でネストされます。他のすべての列がネストされておらず、それらが「アクティビティ」と「ウェルビーイング」で表されているとします。
私は、コードを使用する場合:
nutrition = (pd.io
.json
.json_normalize(data, ['nutritionPortions'])
)
私は「nutritionNutrients」がネストされている元の問題に戻りますが、私は、対応するデータフレームを取得する何の成功を持っていないのです。
おかげ
@simongraham、私はうれしいI助けることができます。 :) [accepting](http://meta.stackexchange.com/a/5235)を最も参考になる回答と考えてください。これはあなたの質問に答えられたことを示します。 – MaxU
現在の問題の最新の編集で私に手を差し伸べることはできません。ありがとう:) – simongraham
@simongraham、私は 'data''の代わりに' data ['nutritionPortions'] 'のようなものを' json_normalize'に渡さなければならないと思います – MaxU