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

السؤال

نشر (معدل)

لنفرض لدي الاطار التالي

df = pd.DataFrame({'a' : [1, 2, 3, 4, 5], 'b' : ['yes', 'no', 'yes', 'no', 'absent']})

يعطي الخرج

 a       b
0  1     yes
1  2      no
2  3     yes
3  4      no
4  5  absent

ارغب بالحصول على الخرج 

  a       b  c
0  1     yes  2
1  2      no  1
2  3     yes  2
3  4      no  1
4  5  absent  0

 

تم التعديل في بواسطة Ali Haidar Ahmad
تعديل عنوان السؤال ليلائم المطلوب

Recommended Posts

  • 0
نشر

- عنوان السؤال يشير لسؤال آخر تمامًا، وغير متطابق مع الشرح. ففي حالة أردنا تغيير نوع البيانات في عمود فهذا يعني تحويل صنف (نوع) البيانات في هذا العمود من صنف لآخر؛ كتحويل صنف العمود الأول من بياناتك من int إلى str، ويمكن إجراء ذلك من خلال استخدام الدلة astype:

DataFrame.astype(dtype, copy=True, errors=’raise’)
dtype: نوع البيانات الذي نريد تطبيقه على إطار البيانات بأكمله.
copy: يُنشئ نسخة أخرى من مجموعة البيانات لوضع التغييرات عليها
errors: 
من خلال تعيينها على "رفع" ، نسمح برفع الاستثناءات بواسطة الدالة.
إذا لم يكن الأمر كذلك ، فيمكننا تعيينه على "تجاهل". 
"ignore"

  مثال:

import pandas as pd 
data = {
  "Gender":['M','F','F','M','F','F','F'],
  "NAME":['John','Camili','Rheana','Joseph','Amanti','Alexa','Siri']
}
block = pd.DataFrame(data)
print("Original Data frame:\n")
print(block)
block.dtypes

الخرج:

Original Data frame:
 
  Gender    NAME
0      M    John
1      F  Camili
2      F  Rheana
3      M  Joseph
4      F  Amanti
5      F   Alexa
6      F    Siri
 
Gender    object
NAME      object
dtype: object

الآن سنطبق الدالة astype على عمود "الجنس" لتغيير نوع البيانات إلى "object".

block['Gender'] = block['Gender'].astype('category')
block.dtypes

الخرج:

Gender    category
NAME        object
dtype: object

- أما حسب شرح السؤال فيبدو أنك تحتاجين إلى إضافة عمود جديد إلى بياناتك لتصنيف نقاط البيانات (الأسطر) إلى فئات، وكما يبدو فإن التصنيف يعتمد على قيم العمود الثاني.
يمكنك استخدام الحل الذي قدمه الأستاذ وائل في هذه الحالة لكن مؤخراً تم حذفها من بايثون في الإصدارات الجديدة، لذا يمكنك استخدام categorical codes كما يلي:

df = pd.DataFrame({'a' : [1, 2, 3, 4, 5], 'b' : ['yes', 'no', 'yes', 'no', 'absent']})
df['c']=pd.Categorical(df['b']).codes
df
"""
a 	b 	c
0 	1 	yes 	2
1 	2 	no 	1
2 	3 	yes 	2
3 	4 	no 	1
4 	5 	absent 	0
"""

 

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

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

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

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

  • إعلانات

  • تابعنا على



×
×
  • أضف...