Maram Jouriah نشر 3 مايو 2021 أرسل تقرير نشر 3 مايو 2021 (معدل) لنفرض لدي الاطار التالي 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 تم التعديل في 11 مارس 2022 بواسطة Ali Haidar Ahmad تعديل عنوان السؤال ليلائم المطلوب 1 اقتباس
0 Wael Aljamal نشر 3 مايو 2021 أرسل تقرير نشر 3 مايو 2021 يمكننا تعريف حقل جديد C بالخصائص التالية: df['c'] = pd.Categorical.from_array(df.b).labels حيث سيأخذ قيمة أسماء عناصر b ويعمل منهم تصنيف: absent -> 0 no -> 1 yes -> 2 نلاحظ أنهم بترتيب أبجدي. 1 اقتباس
0 Ali Haidar Ahmad نشر 9 مارس 2022 أرسل تقرير نشر 9 مارس 2022 - عنوان السؤال يشير لسؤال آخر تمامًا، وغير متطابق مع الشرح. ففي حالة أردنا تغيير نوع البيانات في عمود فهذا يعني تحويل صنف (نوع) البيانات في هذا العمود من صنف لآخر؛ كتحويل صنف العمود الأول من بياناتك من 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 """ اقتباس
السؤال
Maram Jouriah
لنفرض لدي الاطار التالي
يعطي الخرج
ارغب بالحصول على الخرج
تعديل عنوان السؤال ليلائم المطلوب
2 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.