pandas / دليل حلول تحريري

دمج يضاعف الصفوف أو يفقد مطابقات متوقعة

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

وقت القراءة التقريبي: 3 دقيقةتاريخ مراجعة المحتوى

قاعدة معرفة للقراءة فقط · بلا تعليقات عامة

تعرّف على الأعراض

يزيد إثراء المخزون عدد الصفوف وإجمالي الوحدات دون توقع، أو يترك أوصافاً مفقودة لمعرفات تبدو موجودة في المرجع. وقد يكتمل الدمج دون استثناء؛ فلا يعني اكتماله صحة العلاقة.

افهم الأسباب المحتملة

  • قد تتكرر مفاتيح المرجع، أو تغير أعمدة مشتركة ضمنية مفتاح الربط، أو تختلف الأنواع والتطبيع. وقد تغير مطابقة مفاتيح null أو نقص نطاق المرجع المجتمع؛ لذلك يلزم فصل التعددية من التغطية.

التقاط عقدي المدخل قبل إصلاح الناتج

احفظ نسختي المصدر الاصطناعيتين الدقيقتين، ووحدة الصف بكل منهما، ومفاتيح الدمج المختارة وأنواعها، وإصدار pandas. حدد هل المطلوب متعدد لواحد أو واحد لواحد أو متعدد لمتعدد فعلياً. افحص on وleft_on وright_on الصريحة؛ فالاعتماد على كل الأعمدة المشتركة قد يغير المعنى بعد إضافة مخطط في المصدر. لا تصبح الفهارس الموجودة مفاتيح تلقائية عند دمج الأعمدة. سجل هويات الناتج وأعداده المتوقعة باستقلال. لا تستخدم drop_duplicates لاستعادة عدد مألوف؛ لأنها تدمر دليل علاقة المصدر التي أنتجت التضخم.

تحديد المفاتيح المضاعفة وتغطية غير المطابق

احسب تكرارات كل مفتاح غير مفقود على الجانبين قبل تفسير الإجماليات. قد ينتج مفتاح مكرر مرتين يساراً وثلاثاً يميناً ستة أزواج ناتج. يكشف الحساب المحلي الآلية فقط، ولا ينفذ merge في pandas. افحص أيضاً هويات left-only وright-only المتوقعة بمؤشر أو فحص تغطية مكافئ. يثبت نجاح many_to_one شرط التفرد المعني، لا مطابقة كل مفتاح يسار. قد تتطابق مفاتيح null في pandas بعضها مع بعض، خلاف SQL المعتاد؛ فافصل المجهول عندما تمنع علاقة العمل تلك المطابقة.

python عدد أزواج مطابقة محلي
left_frequency = {'A': 2}
right_frequency = {'A': 3}
expected_pairs = left_frequency['A'] * right_frequency['A']
assert expected_pairs == 6
print(expected_pairs)
الناتج المتوقع
6

تنتج ستة أزواج من التكرارات المعطاة؛ ولا يحدث merge أو فحص مصدر.

إصلاح علاقة المصدر بدلاً من اختيار اعتباطي

قد تعني مفاتيح مرجع مكررة عيب مصدر أو مفتاح مستودع أو إصدار أغفل أو سجلات زمنية مشروعة. حدد صف السمات المرجعي لكل حركة قبل اختيار أحدها. قد تكون keep-first أو keep-last الاعتباطية حتمية وخاطئة. قارن الأصفار البادئة والفراغ والحروف وفق عقد الهوية؛ فقد يخلق التطبيع مطابقات زائفة أو تصادمات. لا تحول المفاتيح جميعها لصحيح أو نص لمجرد تشغيل الدمج. احفظ القيم الأصلية والحمولات المتعارضة ليبقى التصحيح قابلاً للتدقيق ولا يخفي مجتمعاً تغير.

مصالحة الهوية والسمات والمقاييس معاً

استخدم مفاتيح صريحة وعلاقة validate المقصودة، ثم افحص تغطية غير المطابق ووحدة الناتج. قارن هويات الحركات الفريدة والمجاميع المعنية والسمات المربوطة بمتوقع مشتق مستقلاً. أدرج في اختبار تشغيل صغير مخول مفتاح مرجع مكرراً، ومفتاحاً مفقوداً، ومعرفاً نصياً يحتفظ بأصفاره البادئة مثل 0017، وقيمة null في كلا الجدولين. لا ينفذ الدليل pandas أو يصل لقاعدة أو ملف حقيقي. حسابه نموذج تعددية ضيق؛ وتبقى الأنواع وفئات indicator وتشخيص MergeError خصائص محرك غير مختبرة، لا إصلاحات رصدت فعلياً.

تحقق من نجاح الإصلاح

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

امنع تكرار المشكلة

  • احفظ وحدة الصف والتفرد وسياسة المفقود وقاعدة إصدار المرجع في العقد. تحقق من المرجع قبل الإثراء، وعد غير المطابق، واختبر إضافات المخطط التي قد تغير المفاتيح الضمنية.

المراجع الرسمية