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

السؤال

نشر

لدي بيانات على شكل Dataframe وأريد استبدال قيم بعض العناصر  التي تتخطى قيمتها 100 وأقوم بجعلها تساوى الصفر، فكرت باستخدام الكود التالي:

df[df.my_channel > 100].my_channel = 0

لكنه لم يفلح، كيف يمكنني فعل هذا؟

Recommended Posts

  • 0
نشر

يمكنك استخدام الدالة iloc أو الدالة .loc من أجل تحديد أماكن العناصر التي تحقق الشرط الذي تريد تغييره كالتالي:

edge = df.my_channel > 100
column_name = 'my_channel'
df.loc[edge, column_name] = 0

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

df.loc[df.my_channel > 100, 'my_channel'] = 0

 

  • 0
نشر

بمكنك القيام بذلك من خلال الدالة mask:

import pandas as pd
import numpy as np

df = pd.DataFrame({'Date' : ['11/8/2011', '11/9/2011', '11/10/2011',
                                        '11/11/2011', '11/12/2011'],
                'Event' : ['Dance', 'Painting', 'Dance', 'Dance', 'Painting']})

df
"""
      Date     	Event
0 	11/8/2011 	Dance
1 	11/9/2011 	Painting
2 	11/10/2011 	Dance
3 	11/11/2011 	Dance
4 	11/12/2011 	Painting
"""
#Hip-Hop بال Dance استبدال  ال
df['Event'].mask(df['Event'] == 'Dance', 'Hip-Hop', inplace=True) #لكي يتم التعديل على البيانات الأصلية inplace==True نضع
df
"""
    Date       	Event
0 	11/8/2011 	Hip-Hop
1 	11/9/2011 	Painting
2 	11/10/2011 	Hip-Hop
3 	11/11/2011 	Hip-Hop
4 	11/12/2011 	Painting
"""

,أو باستخدام df.where:

import pandas as pd
import numpy as np

df = pd.DataFrame({'Date' : ['11/8/2011', '11/9/2011', '11/10/2011',
                                        '11/11/2011', '11/12/2011'],
                'Event' : ['Dance', 'Painting', 'Dance', 'Dance', 'Painting']})
#Hip-Hop بال Dance استبدال  ال
m = df.Event == 'Dance'
df.where(~m,other='Hip-Hop')

أو من خلال np.where:

import pandas as pd
import numpy as np

df = pd.DataFrame({'Date' : ['11/8/2011', '11/9/2011', '11/10/2011',
                                        '11/11/2011', '11/12/2011'],
                'Event' : ['Dance', 'Painting', 'Dance', 'Dance', 'Painting']})
#Art بال Painting استبدال  ال
df['Event'] = np.where((df.Event == 'Painting'),'Art',df.Event)
df
"""
Date 	Event
0 	11/8/2011 	Dance
1 	11/9/2011 	Art
2 	11/10/2011 	Dance
3 	11/11/2011 	Dance
4 	11/12/2011 	Art
"""

إضافة للطريقة التي قدمها أحمد وهي iloc:

import pandas as pd
import numpy as np

df = pd.DataFrame({'Date' : ['11/8/2011', '11/9/2011', '11/10/2011',
                                        '11/11/2011', '11/12/2011'],
                'Event' : ['Dance', 'Painting', 'Dance', 'Dance', 'Painting']})
#Hip-Hop بال Dance استبدال  ال
df.loc[(df.Event == 'Dance'),'Event']='Hip-Hop'
df
"""
    Date      	Event
0 	11/8/2011 	Hip-Hop
1 	11/9/2011 	Painting
2 	11/10/2011 	Hip-Hop
3 	11/11/2011 	Hip-Hop
4 	11/12/2011 	Painting
"""

 

  • 0
نشر

يمكنك ذلك عن طريق إستخدام الدالة loc كالتالي:

import pandas as pd

df = pd.DataFrame({'my_channel' : [100, 200, 500, 100, 50]})
df

الناتج عبارة عن:

   my_channel
0 	100
1 	200
2 	500
3 	100
4 	50

وبإستخدام الدالة loc الناتج يصبح:

df.loc[(df.my_channel > 100),'my_channel']= 0
df
  my_channel
0 	100
1 	0
2 	0
3 	100
4 	50

 

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...