في Pandas، يمكنك مواجهة المواقف التي تحتاج فيها إلى إنشاء عدة أعمدة جديدة بناءً على وظيفة مخصصة مطبقة على العمود الموجود. قد تبدو المهمة واضحة، ولكن يمكن أن تنشأ تحديات غير متوقعة بسبب نوع الإرجاع المتوقع للوظيفة.
في البداية، قد تحاول تعيين مخرجات دالة مباشرة إلى نطاق من المؤشرات في DataFrame باستخدام df.ix[: ,10:16] = df.textcol.map(extract_text_features) بناء الجملة. ومع ذلك، يمكن أن يؤدي هذا الأسلوب غالبًا إلى حدوث أخطاء بسبب نوع الإرجاع غير المتوافق للوظيفة.
أحد الحلول المحتملة هو التكرار على كل صف من DataFrame باستخدام df.iterrows( ). تتيح لك هذه الطريقة تطبيق الوظيفة على كل صف على حدة والتقاط النتائج على شكل صف. ومع ذلك، يمكن أن يكون هذا الأسلوب أبطأ بشكل ملحوظ من الخيارات الأخرى.
الطريقة الأكثر كفاءة ومرونة هي استخدام وظيفة zip() بالتزامن مع Map() لإنشاء الأعمدة الجديدة. تجمع الدالة zip() مخرجات الدالة في صف، والتي يمكن بعد ذلك تفكيكها في أعمدة فردية. على سبيل المثال، يوضح التعليمة البرمجية التالية كيفية إنشاء ستة أعمدة جديدة باستخدام طريقة zip():
df['p1'], df['p2'], df['p3'], df['p4'], df['p5'], df['p6'] = zip(*df['num'].map(powers))
قدمت التحديثات الأخيرة لـ Pandas طرقًا أكثر ملاءمة لتطبيق الوظائف على الأعمدة وإنشاء أعمدة جديدة. على سبيل المثال، يتيح لك التابع df.apply() تحديد تنسيق الإخراج (DataFrame، أو Series، أو list) والتعامل مع المعلمات الإضافية. بالإضافة إلى ذلك، يمكّنك التابع df.assis() من إنشاء أعمدة جديدة مباشرةً دون تعيين المخرجات بشكل صريح. توفر هذه الأساليب الأحدث مرونة وكفاءة أكبر في إنشاء أعمدة جديدة متعددة بناءً على إحدى الوظائف.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3