この記事では、Pandas を使用してネストされたオブジェクトを含む JSON データ構造を効果的に操作する方法を検討します。
次の JSON 構造を考えてみましょう:
{
"number": "",
"date": "01.10.2016",
"name": "R 3932",
"locations": [
{
"depTimeDiffMin": "0",
"name": "Spital am Pyhrn Bahnhof",
"arrTime": "",
"depTime": "06:32",
"platform": "2",
"stationIdx": "0",
"arrTimeDiffMin": "",
"track": "R 3932"
},
{
"depTimeDiffMin": "0",
"name": "Windischgarsten Bahnhof",
"arrTime": "06:37",
"depTime": "06:40",
"platform": "2",
"stationIdx": "1",
"arrTimeDiffMin": "1",
"track": ""
},
{
"depTimeDiffMin": "",
"name": "Linz/Donau Hbf",
"arrTime": "08:24",
"depTime": "",
"platform": "1A-B",
"stationIdx": "22",
"arrTimeDiffMin": "1",
"track": ""
}
]
}
pandas の json_normalize 関数を使用して平坦化すると、ネストされたオブジェクトを表形式に平坦化できます:
import json
with open('myJson.json') as data_file:
data = json.load(data_file)
df = pd.json_normalize(data, 'locations', ['date', 'number', 'name'],
record_prefix='locations_')
これにより、ネストされた「locations」オブジェクト内の各キーの列を含む DataFrame が作成されます。
フラット化が行われない場合必要に応じて、Pandas のグループ化および連結機能を使用できます:
df = pd.read_json("myJson.json")
df.locations = pd.DataFrame(df.locations.values.tolist())['name']
df = df.groupby(['date', 'name', 'number'])['locations'].apply(','.join).reset_index()
このアプローチでは、「場所」が連結されます。 " 値は、「日付」、「名前」、および「番号」の一意の組み合わせごとにカンマ区切りの文字列として表示されます。
pandas の json_normalize とグループ化/連結機能を利用することで、ネストされた JSON 構造を効果的に処理できるため、表形式でデータを抽出して操作できるようになります。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3