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

كيف تتعامل الباندا مع كائنات JSON المتداخلة؟

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

How Do Pandas Handle Nested JSON Objects?

كيفية التعامل مع كائنات JSON المتداخلة باستخدام الباندا

في هذه المقالة، سنستكشف كيفية التعامل بشكل فعال مع هياكل بيانات JSON مع الكائنات المتداخلة باستخدام الباندا.

بنية 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": ""
        }
    ]
}

التسوية باستخدام json_normalize

تتيح لنا وظيفة 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_')

ينتج عن هذا إطار بيانات يحتوي على أعمدة لكل مفتاح في كائن "المواقع" المتداخل.

التسلسل المجمع بدون تسوية

إذا لم تكن التسوية كذلك كما تريد، يمكنك استخدام إمكانات التجميع والتسلسل الخاصة بـ 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()

يقوم هذا الأسلوب بتسلسل "المواقع" " كسلسلة مفصولة بفواصل لكل مجموعة فريدة من "التاريخ" و"الاسم" و"الرقم".

الاستنتاج

من خلال الاستفادة بفضل ميزات json_normalize والتجميع/التسلسل التي تتميز بها الباندا، يمكننا التعامل بفعالية مع هياكل JSON المتداخلة، مما يسمح لنا باستخراج البيانات ومعالجتها بتنسيق جدولي.

بيان الافراج يتم استنساخ هذه المقالة في: 1729739820 إذا كان هناك أي انتهاك ، فيرجى الاتصال بـ [email protected] لحذفه.
أحدث البرنامج التعليمي أكثر>

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

Copyright© 2022 湘ICP备2022001581号-3