دمج الصفوف المكررة في Pandas بناءً على القيم بدون جمع الإيرادات
التعامل مع تكرار الصفوف في إطار البيانات باستخدام مكتبة Pandas في لغة Python يمكن أن يكون تحدًا، ولكن يمكن حله بشكل فعّال باستخدام مجموعة من الوظائف المتاحة في Pandas. هدفك هو دمج الصفوف المكررة بناءً على القيم في عمود معين (في هذه الحالة “Name” و “Sid”)، ولكن دون جمع القيم في العمود “Revenue”.
أحد الطرق الفعّالة لتحقيق ذلك هو استخدام وظيفة groupby()
بالتزامن مع agg()
لتعريف كيفية تجميع القيم لكل عمود. في هذا السياق، يمكنك استخدام join()
لدمج النصوص في عمود “Use_Case” بفصلها بفاصلة.
فلنقم بكتابة سيناريو عملي لحل هذه المشكلة:
pythonimport pandas as pd
# الإطار البياني الأصلي
data = {'Name': ['A', 'A', 'B', 'C', 'C', 'C'],
'Sid': ['xx01', 'xx01', 'xx02', 'xx03', 'xx03', 'xx03'],
'Use_Case': ['Voice', 'SMS', 'Voice', 'Voice', 'SMS', 'Video'],
'Revenue': [10.00, 10.00, 5.00, 15.00, 15.00, 15.00]}
df = pd.DataFrame(data)
# استخدام groupby() و agg() لتجميع البيانات
result = df.groupby(['Name', 'Sid']).agg({'Use_Case': lambda x: ', '.join(x),
'Revenue': 'first'}).reset_index()
# طباعة النتيجة
print(result)
بهذا الشكل، تحققنا من تجميع الصفوف المكررة باستخدام “Name” و “Sid” كمفتاح، واستخدمنا دالة lambda
لدمج القيم في عمود “Use_Case” باستخدام فاصلة. كما قمنا بتحديد أن القيمة في عمود “Revenue” تكون القيمة الأولى باستخدام first()
.
يمكنك استخدام هذا الكود كنقطة انطلاق لحل مشكلتك وتكييفه وفقًا لاحتياجاتك الخاصة.
المزيد من المعلومات
في هذا السياق، يجدر بنا فهم الوظائف التي تم استخدامها في الحل وكيف تساهم في حل المشكلة:
-
groupby(['Name', 'Sid'])
: تقوم هذه الوظيفة بتجميع الصفوف بناءً على قيم العمودين “Name” و “Sid”، مما يسمح بتمييز الصفوف المكررة. -
agg({'Use_Case': lambda x: ', '.join(x), 'Revenue': 'first'})
: هذه الوظيفة تستخدم لتحديد كيفية تجميع القيم في الأعمدة المختلفة. في هذا السياق، تم استخدامlambda
لتجميع القيم في عمود “Use_Case” عن طريق دمجها باستخدام فاصلة. أما في عمود “Revenue”، تم اختيار القيمة الأولى باستخدامfirst()
. -
reset_index()
: تُستخدم هذه الوظيفة لإعادة تعيين فهرس الصفوف بعد التجميع، مما يؤدي إلى الحصول على إطار بيانات نظيف وجاهز للاستخدام.
تحقق هذه الطريقة من الحفاظ على بياناتك بشكل فعّال وتجنب تكرار الصفوف بناءً على المفتاح المحدد، وفي نفس الوقت، تمكنك من دمج القيم في العمود “Use_Case” بشكل مناسب. تكون النتيجة هي إطار بيانات جديد يحتوي على صف واحد لكل مجموعة فريدة من “Name” و “Sid”، ويحتوي على القيم المراد دمجها.