Mohamed Elnemr نشر 7 سبتمبر 2021 أرسل تقرير نشر 7 سبتمبر 2021 (معدل) قمت بعمل dataframe كالتالي: df = DataFrame(index=['A','B','C'], columns=['D','E']) >>> df D E A NaN NaN B NaN NaN C NaN NaN وأريد وضع قيمة في خانة معينة بناء على مكان الخانة index بحيث تظهر كالتالي: D E A NaN NaN B NaN NaN C 20 NaN كيف يمكنني فعل هذا؟ تم التعديل في 7 سبتمبر 2021 بواسطة Mohamed Elnemr 2 اقتباس
1 محمد أبو عواد نشر 7 سبتمبر 2021 أرسل تقرير نشر 7 سبتمبر 2021 يمكنك استخدام .iat / .at , لنفترض أن لديك إطار data_frame التالي A B C 0 1 8 4 1 3 9 6 2 22 33 52 إذا أردنا تعديل قيمة الخلية [0 ، "A"] يمكنك استخدام أحد هذه الحلول: df.iat[0,0] = 2 df.at[0,'A'] = 2 وإليك مثال كامل عن كيفية استخدام iat للحصول على قيمة الخلية وتعيينها: def prepossessing(df): for index in range(0,len(df)): df.iat[index,0] = df.iat[index,0] * 2 return df أو يمكنك استخدام الحل الآتي df.loc[index_position, "column_name"] = some_value اقتباس
1 Ahmed Sharshar نشر 7 سبتمبر 2021 أرسل تقرير نشر 7 سبتمبر 2021 اذا كنت تريد التعديل على ال dataframe بحيث تقوم بعمل نسخة معدلة مع ابقاء النسخة الأصلية غير معدلة يمكنك عمل التالي: df.xs('C')['D']=20 اما اذا أردت التعديل على ال dataframe الأصلية فيمكنك استخدام الكود التالي: df.at['C', 'D'] = 20 وكذلك يمكنك استخدام set_value كالتالي: df.set_value('C', 'D', 20) 1 اقتباس
1 Ali Haidar Ahmad نشر 7 سبتمبر 2021 أرسل تقرير نشر 7 سبتمبر 2021 إليك جميع الطرق مع مقارنة بزمن التنفيذ بينها: import numpy as np import pandas as pd df = pd.DataFrame(np.random.rand(100, 100)) %timeit df.iat[50,50]=50 # ✓ %timeit df.at[50,50]=50 # ✔ %timeit df.set_value(50,50,50) # سوف يتم إلغاءها في قادم النسخ %timeit df.iloc[50,50]=50 %timeit df.loc[50,50]=50 """ 7.06 µs ± 118 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each) الأفضل 5.52 µs ± 64.2 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each) الأفضل 3.68 µs ± 80.8 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each) 98.7 µs ± 1.07 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each) 109 µs ± 1.42 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each) """ كما يمكنك تعديل القيم بالشكل التالي: import pandas as pd df = pd.DataFrame(index=['A','B','C'], columns=['D','E']) df.D["C"]=2 1 اقتباس
0 ريم المهدي نشر 8 سبتمبر 2021 أرسل تقرير نشر 8 سبتمبر 2021 يجب أن تنتبه أن df.iloc, df.loc, df.at يتم تنفيذهم مع حالة كان index بإستخدام الكلمات كما في المثال او الأرقام، df.iloc تعمل فقط في حال كان integer index. أما df.loc و df.at يمكن أن يعملان في حالة كنت تريد الإضافة بإستخدام إسم العمود مع integer index. في حالة كان index غير معرف فإن كل من df.loc , df.at يقومان بالإضافة في dataframe بصورة مباشرة و لكن df.iloc تقوم بإنشاء خطأ، لاحظ المثال التالي: import numpy as np, pandas as pd df = pd.DataFrame(index=np.arange(3), columns=['x','y','z']) df['x'] = ['A','B','C'] df.at[2,'y'] = 400 # الأسطر و الأعمدة غير موجودة في البيانات الأساسية بالتالي يتم إضافتهم df.at['D','w'] = 9000 df.loc['E','q'] = 499 # هذه الطريقة تقوم بإستخدام عبارة شرطية لفلترة البيانات و من قم الإضافة df.at[df1['x']=='B', 'y'] = 10000 df.loc[df1['x']=='B', ['z','w']] = 10000 # إضافة قيم بإستخدام index df.iloc[[1,2,4], 2] = 9999 df.loc[[0,'D','E'],'w'] = 7500 df.at[[0,2,"D"],'x'] = 10 df.at[:, ['y', 'w']] = 8000 df 1 اقتباس
السؤال
Mohamed Elnemr
قمت بعمل dataframe كالتالي:
وأريد وضع قيمة في خانة معينة بناء على مكان الخانة index بحيث تظهر كالتالي:
كيف يمكنني فعل هذا؟
تم التعديل في بواسطة Mohamed Elnemr4 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.