"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيفية إدارة كائنات JSON المتداخلة باعتبارها DataFrame في Pandas؟

كيفية إدارة كائنات JSON المتداخلة باعتبارها DataFrame في Pandas؟

تم النشر بتاريخ 2024-11-08
تصفح:101

How to Manage Nested JSON Objects as a DataFrame in Pandas?

قراءة JSON المتداخلة مع الكائنات المتداخلة كإطار بيانات Pandas

عند التعامل مع بيانات JSON التي تحتوي على كائنات متداخلة، فإن معالجتها بكفاءة في Python أمر بالغ الأهمية . يوفر Pandas أداة قوية لتحقيق ذلك - json_normalize.

توسيع المصفوفة إلى أعمدة

لتوسيع مصفوفة المواقع إلى أعمدة منفصلة، ​​استخدم json_normalize كما يلي:

import json
import pandas as pd

with open('myJson.json') as data_file:
    data = json.load(data_file)

df = pd.json_normalize(data, 'locations', ['date', 'number', 'name'], record_prefix='locations_')

print(df)

سيؤدي ذلك إلى إنشاء إطار بيانات يحتوي على أعمدة موسعة:

  locations_arrTime locations_arrTimeDiffMin locations_depTime  \
0                                                        06:32   
1             06:37                        1             06:40   
2             08:24                        1                     

  locations_depTimeDiffMin           locations_name locations_platform  \
0                        0  Spital am Pyhrn Bahnhof                  2   
1                        0  Windischgarsten Bahnhof                  2   
2                                    Linz/Donau Hbf               1A-B   

  locations_stationIdx locations_track number    name        date  
0                    0          R 3932         R 3932  01.10.2016  
1                    1                         R 3932  01.10.2016  
2                   22                         R 3932  01.10.2016 

التعامل مع كائنات JSON المتعددة

بالنسبة لملفات JSON التي تحتوي على كائنات متعددة، يعتمد النهج على بنية البيانات المطلوبة.

الاحتفاظ بالأعمدة الفردية

للاحتفاظ بالأعمدة الفردية (التاريخ والرقم والاسم والمواقع)، استخدم ما يلي:

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()

print(df)

سيؤدي ذلك إلى تجميع البيانات وتسلسل المواقع:

        date    name number                                          locations
0  2016-01-10  R 3932         Spital am Pyhrn Bahnhof,Windischgarsten Bahnho...

تسوية بنية البيانات

إذا كنت تفضل بنية بيانات مسطحة، فيمكنك ذلك استخدم json_normalize مع الإعدادات التالية:

df = pd.read_json('myJson.json', orient='records', convert_dates=['date'])

print(df)

سيؤدي ذلك إلى إخراج البيانات في جدول واحد:

  number    date                   name  ... locations.arrTimeDiffMin locations.depTimeDiffMin locations.platform
0             R 3932  2016-01-10  R 3932  ...                       0                         0                  2
1             R 3932  2016-01-10  R 3932  ...                       1                         0                  2
2             R 3932  2016-01-10  R 3932  ...                       1                         -                  1A-B
بيان الافراج أعيد طبع هذه المقالة على: 1729739643 في حالة وجود أي انتهاك، يرجى الاتصال بـ [email protected] لحذفها
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3