كيفية الإصلاح في pandas: لا يمكن تحويل السلسلة إلى تعويم


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

 ValueError : could not convert string to float: '$400.42'

يحدث هذا الخطأ عادةً عند محاولة تحويل سلسلة إلى عائمة في الباندا، عندما تحتوي السلسلة على واحد أو أكثر مما يلي:

  • المساحات
  • الفواصل
  • شخصيات خاصة

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

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

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

لنفترض أن لدينا DataFrame الباندا التالية:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' store ': ['A', 'B', 'C', 'D'],
                   ' revenue ': ['$400.42', '$100.18', '$243.75', '$194.22']})

#view DataFrame
print (df)

  store revenue
0 A $400.42
1 B $100.18
2 C $243.75
3D $194.22

#view data type of each column
print ( df.dtypes )

store object
revenue object
dtype:object

لنفترض الآن أننا نحاول تحويل عمود الإيرادات من سلسلة إلى عدد عائم:

 #attempt to convert 'revenue' from string to float
df[' revenue '] = df[' revenue ']. astype (float)

ValueError : could not convert string to float: '$400.42'

نتلقى خطأ لأن عمود الدخل يحتوي على علامة الدولار في السلاسل.

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

طريقة حل هذا الخطأ هي استخدام الدالة استبدال () لاستبدال علامات الدولار في عمود الدخل بلا شيء قبل إجراء التحويل:

 #convert revenue column to float
df[' revenue '] = df[' revenue ']. apply ( lambda x: float(x. split ()[ 0 ]. replace (' $ ', '')))

#view updated DataFrame
print (df)

  store revenue
0 to 400.42
1 B 100.18
2 C 243.75
3 D 194.22

#view data type of each column
print ( df.dtypes )

store object
income float64
dtype:object

لاحظ أننا قادرون على تحويل عمود الإيرادات من سلسلة إلى سلسلة عائمة ولا نتلقى أي أخطاء منذ أن قمنا بإزالة علامات الدولار قبل إجراء التحويل.

مصادر إضافية

تشرح البرامج التعليمية التالية كيفية إصلاح الأخطاء الشائعة الأخرى في بايثون:

كيفية الإصلاح في Python: الكائن “numpy.ndarray” غير قابل للاستدعاء
كيفية الإصلاح: خطأ في الكتابة: الكائن “numpy.float64” غير قابل للاستدعاء
كيفية الإصلاح: خطأ في الكتابة: كائن السلسلة أو البايتات المتوقعة

Add a Comment

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