تقنية

دمج قيم جدولين للنموذج: هل combine_first يستبدل القيمة الموجودة؟

رسم يبين إبقاء قيمة أ في الأول وملء ب من الثاني وإضافة ج إلى اتحاد الصفوف
رسم أصلي لمثال افتراضي، وليس ناتجا لتشغيل pandas.

عند استخدام combine_first، يحتفظ الجدول الأول بقيمته غير المفقودة في الموضع المشترك، ويستفيد من الثاني لملء المواضع المفقودة. وقد تظهر في الناتج تسميات لم تكن في الأول. لذلك لا تصف العملية بأنها تحديث كل خانات الأول بالثاني، ولا تفترض أن الاسم الأول يعني أن بياناته أصح من غيرها.

الخلاصة السريعة

يحفظ combine_first القيمة الموجودة في الأول ويملأ غيابه من الثاني، مع اتحاد تسميات الصفوف والأعمدة.

  • توثق pandas ملء القيمة المفقودة من الموضع المقابل في الآخر، وأولوية الأول عند وجود القيمتين، واتحاد فهارس الصفوف والأعمدة. [1]
  • في مثال العمود نفسه، الأول أ = 10 وب مفقودة، والثاني أ = 12 وب = 8 وج = 5 ؛ الناتج أ = 10 وب = 8 وج = 5.
  • عكس اتجاه العملية من جديد يعطي أ = 12 ؛ لذلك أولوية المصدر قرار ظاهر، ولا يعني بقاء قيمة أنها أحدث أو أدق.
  • يبقى الغياب إذا لم توجد قيمة بديلة في الموضع المطابق؛ تحقق من هوية التسميات ومعنى العمود قبل الدمج، لا من ترتيب الصفوف فقط.

ما قاعدة الاختيار بين الجدولين؟

تشرح وثيقة DataFrame.combine_first ملء القيم المفقودة بقيم غير مفقودة في الموقع المقابل من الجدول الآخر. فهارس الصفوف والأعمدة في النتيجة هي اتحاد فهارس الجدولين. إذا لم تكن القيمتان مفقودتين، تحتفظ النتيجة بقيمة الجدول الأول. [1]

سنعمل على عمود واحد اسمه عدد، وفهارس فريدة أ وب وج. كلمة الأول هنا تعني صاحب العملية، ولا تعني المصدر المعتمد أو الأحدث. هذه التسمية التقنية لا تحل قرار أولوية البيانات في مشروع الذكاء الاصطناعي.

كيف يملأ غيابا ويضيف صفا؟

الجدول الأول يحتوي أ بالقيمة 10 وب بقيمة مفقودة. والثاني يحتوي أ بالقيمة 12 وب بالقيمة 8 وج بالقيمة 5. حين نطبق اتجاه الأول ثم الثاني، تبقى أ = 10 ، لأن الأولى موجودة؛ تأخذ ب القيمة 8 ، ويظهر صف ج بالقيمة 5.

إضافة ج لا تعني أن العملية ملأت خانة كانت موجودة في الأول؛ توسع فهرس النتيجة أيضا. وإبقاء أ = 10 لا يعني أن القيمة 12 اختفت من المصدر الثاني. إذا أردت مراجعة الاختلاف بين القيمتين، احتفظ بالجدولين قبل إنتاج ملخص مختصر للناتج.

لماذا يغير عكس المصدر النتيجة؟

نبدأ المقارنة الثانية من الجدولين الأصليين، لا من ناتج المقارنة الأولى. لو جعلنا الجدول الثاني صاحب العملية والأول البديل، فإن قيمة أ = 12 موجودة في الثاني، فتظل 12. قيم ب = 8 وج = 5 موجودة فيه أيضا، فتظل كما هي.

اختلاف أ بين النتيجتين يأتي من اختيار الأولوية، لا من حساب متوسط 10 و 12. إذا قال المساعد إن النتيجة انتقت أحدث قيمة، فاطلب حقل التاريخ والقاعدة التي اختارت الاتجاه. لا يوجد في بطاقتنا تاريخ تحديث، ولا نجعل ترتيب الوسيطين دليلا على جودة القياس.

هل يستطيع البديل ملء كل غياب؟

توضح الوثيقة أن القيمة المفقودة يمكن أن تبقى إذا لم يوجد موضعها في الجدول الآخر. [1]

لنضف في مقارنة مستقلة الصف د المفقود إلى الأول، بينما لا يملك الثاني صف د. اتحاد التسميات يسمح بظهور د في النتيجة، لكنه لا يوفر قيمة بديلة له. لا يحق للمساعد أن يكتب صفرا أو رقما مقترحا ثم ينسبه إلى عملية الدمج المحددة.

راجع أن التسميات المشتركة تخص الكيان نفسه، وأن العمود يقيس المعنى والوحدة نفسيهما. مطابقة حرف أ بين ملفين لا تثبت ذلك. دوّن اتجاه الأولوية والقيم التي بقيت مفقودة، ثم افحص العدد المتوقع للصفوف. الأمثلة يدوية، ولم ننفذ دمجا أو نختبر أثره على نموذج.

المصادر ومتابعة القراءة

  1. pandas DataFrame combine_first (يفتح في نافذة جديدة)pandas.pydata.org

أُعدّ هذا المقال بصياغة عربية أصلية بالاستناد إلى المصادر أعلاه، وهو مدخل تمهيدي إلى الموضوع. اقرأ منهجية المحتوى وحدوده.