كيفية الإصلاح: أنت تحاول دمج الكائن وأعمدة int64
الخطأ الذي قد تواجهه عند استخدام الباندا هو:
ValueError : You are trying to merge on int64 and object columns.
If you wish to proceed you should use pd.concat
يحدث هذا الخطأ عند محاولة دمج اثنين من DataFrames الباندا ولكن العمود الذي تقوم بدمجه هو كائن في DataFrame واحد وعدد صحيح في DataFrame الآخر.
يوضح المثال التالي كيفية تصحيح هذا الخطأ عمليًا.
كيفية إعادة إنتاج الخطأ
لنفترض أننا أنشأنا إطاري بيانات الباندا التاليين:
import pandas as pd #createDataFrame df1 = pd. DataFrame ({' year ': [2015, 2016, 2017, 2018, 2019, 2020, 2021], ' sales ': [500, 534, 564, 671, 700, 840, 810]}) df2 = pd. DataFrame ({' year ': ['2015', '2016', '2017', '2018', '2019', '2020', '2021'], ' refunds ': [31, 36, 40, 40, 43, 70, 62]}) #view DataFrames print (df1) year sales 0 2015 500 1 2016 534 2 2017 564 3 2018 671 4 2019 700 5,2020 840 6 2021 810 print (df2) year refunds 0 2015 31 1 2016 36 2 2017 40 3 2018 40 4 2019 43 5 2020 70 6 2021 62
لنفترض الآن أننا نحاول دمج إطاري البيانات:
#attempt to merge two DataFrames
big_df = df1. merge (df2, on=' year ', how=' left ')
ValueError : You are trying to merge on int64 and object columns.
If you wish to proceed you should use pd.concat
نتلقى خطأ ValueError لأن متغير السنة في DataFrame الأول هو عدد صحيح ولكن متغير السنة في DataFrame الثاني هو كائن.
كيفية اصلاح الخطأ
أسهل طريقة لإصلاح هذا الخطأ هي ببساطة تحويل متغير السنة لـ DataFrame الثاني إلى عدد صحيح ثم إجراء الدمج.
يوضح بناء الجملة التالي كيفية القيام بذلك:
#convert year variable in df2 to integer
df2[' year ']=df2[' year ']. astype (int)
#merge two DataFrames
big_df = df1. merge (df2, on=' year ', how=' left ')
#view merged DataFrame
big_df
year sales refunds
0 2015 500 31
1 2016 534 36
2 2017 564 40
3 2018 671 40
4 2019 700 43
5 2020 840 70
6 2021 810 62
لاحظ أننا لا نتلقى أي ValueError ونجحنا في دمج إطاري البيانات في إطار واحد.
مصادر إضافية
تشرح البرامج التعليمية التالية كيفية إصلاح الأخطاء الشائعة الأخرى في بايثون:
كيفية الإصلاح: تتداخل الأعمدة ولكن لم يتم تحديد أي لاحقة
كيفية الإصلاح: لا يحتوي الكائن “numpy.ndarray” على سمة “إلحاق”.
كيفية الإصلاح: إذا كنت تستخدم جميع القيم العددية، فستحتاج إلى تمرير فهرس