البرمجة

دمج الجداول في باندا بدون مفاتيح: الاستدعاء الكروسي لإنشاء إطار بيانات مكرر

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

قمنا بتعريف جدولين DF1 وDF2، ونريد دمجهما بحيث يتم إنشاء جدول جديد DF_merged. هذا الجدول يتكون من تكرار كل صف في DF1 مع كل صف في DF2. يمكن تحقيق هذا باستخدام وظيفة الاستدعاء الكروسي (cross join)، والتي لا تتطلب استخدام مكتبة itertools.

import pandas as pd

# تعريف الجدول الأول DF1
DF1 = pd.DataFrame({
    'id': [1, 2],
    'quantity': [20, 23]
})

# تعريف الجدول الثاني DF2
DF2 = pd.DataFrame({
    'name': ['A', 'B', 'C'],
    'part': [3, 4, 5]
})

# إنشاء جدول جديد DF_merged بواسطة الاستدعاء الكروسي
DF_merged = pd.merge(DF1.assign(key=1), DF2.assign(key=1), on='key').drop('key', axis=1)

# طباعة الجدول المدموج
print(DF_merged)

بهذه الطريقة، نقوم بإضافة عمود مؤقت إلى كل جدول يحتوي على نفس القيمة (في هذه الحالة، قيمة 1)، ثم نستخدم وظيفة الدمج مع المفتاح المؤقت. في النهاية، نقوم بإزالة العمود المؤقت. هذا يؤدي إلى إنشاء جدول يحتوي على جميع الصفوف الممكنة للجدولين DF1 و DF2.

تحتوي DF_merged الناتجة على البيانات المرجوة:

   id  quantity name  part
0   1        20    A      3
1   1        20    B      4
2   1        20    C      5
3   2        23    A      3
4   2        23    B      4
5   2        23    C      5

بهذا تم تحقيق الهدف المطلوب بدون الحاجة إلى استخدام مكتبة itertools.

المزيد من المعلومات

لنتوسع أكثر في الفهم والتفاصيل حول العملية، يمكننا أن نستعرض بعض النقاط الرئيسية والتي تعكس الطريقة التي تم بها دمج الجدولين DF1 وDF2 دون وجود مفتاح مشترك:

1. البث (Broadcasting):

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

2. وظيفة الاستدعاء الكروسي:

استخدمنا وظيفة الاستدعاء الكروسي (`pd.merge`) لدمج الجدولين. باستخدام `assign` قمنا بإضافة عمود مؤقت (key) إلى كل جدول يحتوي على نفس القيمة. ثم تم الدمج باستخدام هذا المفتاح المؤقت وبعد ذلك تمت إزالة العمود المؤقت بواسطة `drop`.

3. إطار البيانات الناتج:

الناتج هو إطار بيانات جديد (DF_merged) يحتوي على جميع الأزواج الممكنة من الصفوف بين DF1 وDF2. كل صف في DF1 يتم دمجه مع كل صف في DF2، وبذلك يكون لدينا إطار بيانات نهائي يحتوي على جميع الجمعيات الممكنة بين الصفوف.

4. التعبير البرمجي:

التعبير البرمجي يظهر كيف يمكن تحقيق هذا الهدف بسهولة باستخدام مكتبة باندا Pandas في لغة بايثون. يتيح هذا النهج البرمجي إمكانية تحقيق العمليات المعقدة مع بساطة وفاعلية.

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

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

زر الذهاب إلى الأعلى