الباندا: كيفية استبدال القيم في عمود بناءً على الحالة
يمكنك استخدام بناء الجملة الأساسي التالي لاستبدال القيم في عمود من الباندا DataFrame بناءً على شرط:
#replace values in 'column1' that are greater than 10 with 20 df. loc [df[' column1 '] > 10, ' column1 '] = 20
توضح الأمثلة التالية كيفية استخدام بناء الجملة هذا عمليًا.
مثال 1: استبدال القيم في عمود بناءً على شرط
لنفترض أن لدينا DataFrame الباندا التالية:
import pandas as pd #createDataFrame df = pd. DataFrame ({' team ': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'], ' position ': ['G', 'G', 'F', 'F', 'G', 'G', 'F', 'F'], ' points ': [5, 7, 7, 9, 12, 13, 9, 14], ' assists ': [3, 8, 2, 6, 6, 5, 9, 5]}) #view DataFrame df team position points assists 0 A G 5 3 1 A G 7 8 2 A F 7 2 3 A F 9 6 4 B G 12 6 5 B G 13 5 6 B F 9 9 7 B F 14 5
يمكننا استخدام الكود التالي لاستبدال كل قيمة في عمود “النقاط” الأكبر من 10 بقيمة 20:
#replace any values in 'points' column greater than 10 with 20
df. loc [df[' points '] > 10, ' points '] = 20
#view updated DataFrame
df
team position points assists
0 A G 5 3
1 A G 7 8
2 A F 7 2
3 A F 9 6
4 B G 20 6
5 B G 20 5
6 B F 9 9
7 B F 20 5
لاحظ أنه تم استبدال كل من القيم الثلاث في عمود “النقاط” الأكبر من 10 بالقيمة 20.
مثال 2: استبدال القيم في عمود بناءً على شروط متعددة
لنفترض أن لدينا DataFrame الباندا التالية:
import pandas as pd #createDataFrame df = pd. DataFrame ({' team ': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'], ' position ': ['G', 'G', 'F', 'F', 'G', 'G', 'F', 'F'], ' points ': [5, 7, 7, 9, 12, 13, 9, 14], ' assists ': [3, 8, 2, 6, 6, 5, 9, 5]}) #view DataFrame df team position points assists 0 A G 5 3 1 A G 7 8 2 A F 7 2 3 A F 9 6 4 B G 12 6 5 B G 13 5 6 B F 9 9 7 B F 14 5
يمكننا استخدام الكود التالي لاستبدال كل قيمة في عمود “الموضع” حيث تكون النقاط أقل من 10 أو التمريرات الحاسمة أقل من 5 بالسلسلة “سيء”:
#replace string in 'position' column with 'bad' if points < 10 or assists < 5
df. loc [(df[' points '] < 10) | (df[' assists '] < 5), ' position '] = ' Bad '
#view updated DataFrame
df
team position points assists
0 A Bad 5 3
1 A Bad 7 8
2 A Bad 7 2
3 A Bad 9 6
4 B G 20 6
5 B G 20 5
6 B Bad 9 9
7 B F 20 5
وبالمثل، يمكننا استخدام الكود التالي لاستبدال كل قيمة في عمود “الموضع” حيث تكون النقاط أقل من 10 والتمريرات أقل من 5 بالسلسلة “سيء”:
#replace string in 'position' column with 'bad' if points < 10 and assists < 5
df. loc [(df[' points '] < 10) & (df[' assists '] < 5), ' position '] = ' Bad '
#view updated DataFrame
df
team position points assists
0 A Bad 5 3
1 A G 7 8
2 A Bad 7 2
3 A F 9 6
4 B G 12 6
5 B G 13 5
6 B F 9 9
7 B F 14 5
لاحظ أن السطرين حيث كانت النقاط أقل من 10 وتمريرات حاسمة أقل من 5 تم استبدال قيمة “الموضع” الخاصة بهما بالسلسلة “سيئ”.
مصادر إضافية
تشرح البرامج التعليمية التالية كيفية تنفيذ العمليات الشائعة الأخرى في الباندا:
كيفية تحديد الصفوف بناءً على شروط متعددة في Pandas
كيفية إنشاء عمود جديد بناءً على شرط في Pandas
كيفية تصفية Pandas DataFrame بشروط متعددة