كيفية الإصلاح: تتداخل الأعمدة ولكن لم يتم تحديد أي لاحقة


الخطأ الذي قد تواجهه عند استخدام الباندا هو:

 ValueError : columns overlap but no suffix specified: Index(['column'], dtype='object')

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

هناك طريقتان لإصلاح هذا الخطأ:

الحل 1: تقديم أسماء لاحقة.

 df1. join (df2, how = ' left ', lsuffix=' left ', rsuffix=' right ')

الحل 2: استخدم وظيفة الدمج بدلاً من ذلك.

 df1. merge (df2, how = ' left ')

يوضح المثال التالي كيفية تصحيح هذا الخطأ عمليًا.

كيفية إعادة إنتاج الخطأ

لنفترض أننا نحاول تجميع إطاري البيانات التاليين معًا:

 import pandas as pd

#create first data frame
df1 = pd. DataFrame ({' player ': ['A', 'B', 'C', 'D', 'E', 'F'],
                    ' points ': [5, 7, 7, 9, 12, 9],
                    ' assists ': [11, 8, 10, 6, 6, 5]})

#create second data frame
df2 = pd. DataFrame ({' player ': ['A', 'B', 'C', 'D', 'E', 'F'],
                    ' rebounds ': [4, 4, 6, 9, 13, 16],
                    ' steals ': [2, 2, 1, 4, 3, 2]})

#attempt to perform left join on data frames
df1. join (df2, how = ' left ')

ValueError : columns overlap but no suffix specified: Index(['player'], dtype='object')

نتلقى خطأ لأن إطاري البيانات يشتركان في عمود “اللاعب”، ولكن لا يتم توفير لاحقة لإطار البيانات الأيسر أو الأيمن لتمييز أعمدة إطار البيانات الجديد.

كيفية اصلاح الخطأ

تتمثل إحدى طرق إصلاح هذا الخطأ في توفير اسم لاحقة لإطار البيانات الأيسر أو الأيمن:

 #perform left join on data frames with suffix provided
df1. join (df2, how = ' left ', lsuffix=' left ', rsuffix=' right ')

        playerleft points assists playerright rebounds steals
0 A 5 11 A 4 2
1 B 7 8 B 4 2
2 C 7 10 C 6 1
3 D 9 6 D 9 4
4 E 12 6 E 13 3
5 F 9 5 F 16 2

هناك طريقة أخرى لإصلاح هذا الخطأ وهي استخدام الدالة merge() ، والتي لا تواجه هذه المشكلة عند ضم إطاري بيانات:

 #merge two data frames
df1. merge (df2, how = ' left ')

	player points assists rebounds steals
0 A 5 11 4 2
1 B 7 8 4 2
2 C 7 10 6 1
3 D 9 6 9 4
4 E 12 6 13 3
5 F 9 5 16 2

لاحظ أن الدالة merge() تقوم ببساطة بإزالة كافة الأسماء من إطار البيانات الثاني الذي ينتمي بالفعل إلى إطار البيانات الأول.

مصادر إضافية

كيفية دمج اثنين من إطارات بيانات Pandas في ملف Index
كيفية دمج Pandas DataFrames عبر أعمدة متعددة
كيفية إضافة مجموعة Numpy إلى Pandas DataFrame

Add a Comment

ایمئیل یایینلانمایاجاق ایسته‎نیله‎ن بوشلوقلار خاللانمیشدیر *