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

إستبدال القيم NaN بأصفار في أحد الأعمدة في pandas

Mohamed Elnemr

السؤال

لدي بيانات على شكل 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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...