اذهب إلى المحتوى

السؤال

نشر (معدل)

لدي بيانات على شكل dataframe كالتالي:

 itm Date        Amount 
 420 2021-09-30   65211
 421 2021-09-09   29424
 421 2021-09-16   29877
 421 2021-09-23   30990
 421 2021-09-30   61303
 485 2021-09-09   71781
 485 2021-09-16   NaN
 485 2021-09-23   11072
 485 2021-09-30   113702
 489 2021-09-09   64731
 489 2021-09-16   NaN

أود تحويل قيم NaN الى 0 ، لكن عندما أحاول يظهر لي الخطأ التالي:

ValueError: cannot convert float NaN to integer

كيف يمكنني حل تلك المشكلة؟

تم التعديل في بواسطة Mohamed Elnemr

Recommended Posts

  • 0
نشر

يمكنك ببساطة استخدام الدالة DataFrame.fillna()  لاستبدالة قيم ال NaN بأي قيمه تريد،المثال التالي يوضح كيفية استخدامها لاستبدال NaN بالصفر في كل ال dataframe:

In [2]: df
Out[2]: 
          0         1
0       NaN       NaN
1 -0.494375  0.570994
2       NaN       NaN
3  1.876360 -0.229738
4       NaN       NaN

In [3]: df.fillna(0)
Out[3]: 
          0         1
0  0.000000  0.000000
1 -0.494375  0.570994
2  0.000000  0.000000
3  1.876360 -0.229738
4  0.000000  0.000000

أما اذا أردت تحديد عمود معين لاستبدال القيم فيه فيمكنك عمل التالي:

In [5]: df[1].fillna(0, inplace=True) #1 هو رقم العمود المراد استبدال قيمة 
Out[5]: 
0    0.000000
1    0.570994
2    0.000000
3   -0.229738
4    0.000000


In [6]: df
Out[6]: 
          0         1
0       NaN  0.000000
1 -0.494375  0.570994
2       NaN  0.000000
3  1.876360 -0.229738
4       NaN  0.000000

لذا اذا قمنا بتطبيق تلك الطريقة في البيانات الخاصة بك يمكنك عمل التالي:

In[7]: df[2].fillna(0, inplace=True)
Out[7]: 
 itm Date        Amount 
 420 2021-09-30   65211
 421 2021-09-09   29424
 421 2021-09-16   29877
 421 2021-09-23   30990
 421 2021-09-30   61303
 485 2021-09-09   71781
 485 2021-09-16   0.0000
 485 2021-09-23   11072
 485 2021-09-30   113702
 489 2021-09-09   64731
 489 2021-09-16   0.0000

 

  • 0
نشر

يمكنك استخدام replace:

import pandas as pd
import numpy as np
# للأعمدة
df['col'] = df['col'].replace(np.nan, 0)
# لكامل الداتافريم
df = df.replace(np.nan, 0)
# إذا أردت أن يتم التعديل على البيانات الأصلية دون نسخة
df.replace(np.nan, 0, inplace=True)

أو باستخدام :

# قراءة الداتافريم
df = pandas.read_csv('somefile.txt')
# استبدال القيم المفقودة ب0
df = df.fillna(0)
# وبشكل أكثر دقة 
# يمكنك أن تحدد له عمود محدد 
df['column_name'].fillna(0)
#في حال أردنا التعديل على البيانات الأصلية inplace=True ونضيف 

 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...