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

كيفية إنشاء أعمدة جديدة متعددة بكفاءة من وظيفة في الباندا؟

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

How to Efficiently Create Multiple New Columns from a Function in Pandas?

إنشاء أعمدة جديدة متعددة من وظيفة باستخدام Pandas

في Pandas، يمكنك مواجهة المواقف التي تحتاج فيها إلى إنشاء عدة أعمدة جديدة بناءً على وظيفة مخصصة مطبقة على العمود الموجود. قد تبدو المهمة واضحة، ولكن يمكن أن تنشأ تحديات غير متوقعة بسبب نوع الإرجاع المتوقع للوظيفة.

النهج الأصلي: تعيين إلى نطاق الفهرس

في البداية، قد تحاول تعيين مخرجات دالة مباشرة إلى نطاق من المؤشرات في DataFrame باستخدام df.ix[: ,10:16] = df.textcol.map(extract_text_features) بناء الجملة. ومع ذلك، يمكن أن يؤدي هذا الأسلوب غالبًا إلى حدوث أخطاء بسبب نوع الإرجاع غير المتوافق للوظيفة.

الحل التكراري

أحد الحلول المحتملة هو التكرار على كل صف من DataFrame باستخدام df.iterrows( ). تتيح لك هذه الطريقة تطبيق الوظيفة على كل صف على حدة والتقاط النتائج على شكل صف. ومع ذلك، يمكن أن يكون هذا الأسلوب أبطأ بشكل ملحوظ من الخيارات الأخرى.

استخدام zip()

الطريقة الأكثر كفاءة ومرونة هي استخدام وظيفة zip() بالتزامن مع Map() لإنشاء الأعمدة الجديدة. تجمع الدالة zip()‎ مخرجات الدالة في صف، والتي يمكن بعد ذلك تفكيكها في أعمدة فردية. على سبيل المثال، يوضح التعليمة البرمجية التالية كيفية إنشاء ستة أعمدة جديدة باستخدام طريقة zip():

df['p1'], df['p2'], df['p3'], df['p4'], df['p5'], df['p6'] = zip(*df['num'].map(powers))

تم التحسين أساليب DataFrame

قدمت التحديثات الأخيرة لـ Pandas طرقًا أكثر ملاءمة لتطبيق الوظائف على الأعمدة وإنشاء أعمدة جديدة. على سبيل المثال، يتيح لك التابع df.apply()‎ تحديد تنسيق الإخراج (DataFrame، أو Series، أو list) والتعامل مع المعلمات الإضافية. بالإضافة إلى ذلك، يمكّنك التابع df.assis()‎ من إنشاء أعمدة جديدة مباشرةً دون تعيين المخرجات بشكل صريح. توفر هذه الأساليب الأحدث مرونة وكفاءة أكبر في إنشاء أعمدة جديدة متعددة بناءً على إحدى الوظائف.

أحدث البرنامج التعليمي أكثر>

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

Copyright© 2022 湘ICP备2022001581号-3