إضافة أعمدة جديدة إلى جداول بيانات Pandas هي مهمة أساسية في معالجة البيانات. غالبًا ما ستحتاج إلى تهيئة هذه الأعمدة الجديدة بقيمة افتراضية. تستعرض هذه المقالة طريقتين فعالتين لتحقيق ذلك في Pandas: pandas.DataFrame.assign()
و pandas.DataFrame.insert()
، مع تسليط الضوء على اختلافاتهما وأفضل حالات الاستخدام.
جدول المحتويات
- استخدام
pandas.DataFrame.assign()
لإضافة الأعمدة - إضافة أعمدة بقيم افتراضية شرطية
- استخدام
pandas.DataFrame.insert()
لإضافة الأعمدة - اختيار الطريقة المناسبة
استخدام pandas.DataFrame.assign()
لإضافة الأعمدة
توفر طريقة assign()
طريقة نظيفة وموجزة لإضافة أعمدة جديدة. الأهم من ذلك، أنها تُرجع جدول بيانات *جديد*، تاركة جدول البيانات الأصلي دون تغيير. يعزز هذا النهج الوظيفي من الثبات ويساعد على منع التعديلات غير المتوقعة.
import pandas as pd
# جدول بيانات نموذجي
data = {'A': [1, 2, 3], 'B': [4, 5, 6]}
df = pd.DataFrame(data)
print("جدول البيانات الأصلي:n", df)
# إضافة عمود جديد 'C' بقيمة افتراضية 0
df_new = df.assign(C=0)
print("nجدول البيانات بعد إضافة العمود 'C':n", df_new)
print("nجدول البيانات الأصلي يبقى دون تغيير:n", df)
# إضافة أعمدة متعددة في وقت واحد
df_new = df.assign(C=0, D='default')
print("nجدول البيانات بعد إضافة أعمدة متعددة:n", df_new)
إضافة أعمدة بقيم افتراضية شرطية
بالنسبة للسيناريوهات الأكثر تعقيدًا التي تتطلب قيمًا افتراضية شرطية بناءً على البيانات الموجودة، يمكن دمج assign()
مع ميزات Pandas الأخرى. يوفر هذا مزيدًا من التحكم والمرونة.
import pandas as pd
import numpy as np
data = {'A': [1, 2, 3], 'B': [4, 5, 6]}
df = pd.DataFrame(data)
# إضافة عمود جديد 'C' بـ NaN كعنصر نائب ثم تعيين القيم بشكل شرطي
df['C'] = np.nan
df.loc[df['A'] > 1, 'C'] = 10
df.loc[df['A'] <= 1, 'C'] = 20
print("nجدول البيانات بعد إضافة وتعيين العمود 'C' بشكل شرطي:n", df)
استخدام pandas.DataFrame.insert()
لإضافة الأعمدة
تتيح طريقة insert()
التحكم الدقيق في وضع العمود. على عكس assign()
، فإنها تعدل جدول البيانات *في مكانه*. هذا يعني أن جدول البيانات الأصلي يتم تغييره مباشرة.
import pandas as pd
data = {'A': [1, 2, 3], 'B': [4, 5, 6]}
df = pd.DataFrame(data)
# إضافة عمود جديد 'C' في الموضع 1 (الفهرس 1) بقيمة افتراضية 0
df.insert(1, 'C', 0)
print("nجدول البيانات بعد إدراج العمود 'C':n", df)
بما أن insert()
تعدل جدول البيانات في مكانه، فمن المهم إنشاء نسخة باستخدام .copy()
إذا كنت بحاجة إلى الحفاظ على جدول البيانات الأصلي.
اختيار الطريقة المناسبة
يعتمد الاختيار بين assign()
و insert()
على احتياجاتك. يُفضل استخدام assign()
بشكل عام لطبيعته الوظيفية والثابتة، خاصة عند التعامل مع منطق معقد أو إضافة أعمدة متعددة. insert()
مفيدة عندما يكون وضع العمود الدقيق أمرًا بالغ الأهمية ويكون التعديل في المكان مقبولًا. ضع دائمًا في اعتبارك آثار التعديل في المكان لتجنب العواقب غير المقصودة.