في هذه المقالة، سنستكشف كيفية التعامل بشكل فعال مع هياكل بيانات 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 الباندا تسوية الكائنات المتداخلة في تنسيق جدولي:
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 المتداخلة، مما يسمح لنا باستخراج البيانات ومعالجتها بتنسيق جدولي.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3