استخراج السنة والشهر من عمود التاريخ والوقت في Pandas مهمة شائعة. تستعرض هذه المقالة ثلاث طرق فعالة، مع مقارنة نقاط القوة والضعف لكل منها لمساعدتك في اختيار النهج الأنسب لاحتياجاتك.
جدول المحتويات
استخدام مُحسِّن .dt
يوفر مُحسِّن .dt
طريقة مباشرة وفعالة لاستخراج مكونات التاريخ والوقت. غالبًا ما تكون هذه الطريقة هي المفضلة نظرًا لسهولة قراءتها وإيجازها.
import pandas as pd
data = {'date': pd.to_datetime(['2024-03-15', '2023-11-20', '2024-05-10'])}
df = pd.DataFrame(data)
df['year'] = df['date'].dt.year
df['month'] = df['date'].dt.month
print(df)
سيكون مُخرج هذا الكود:
date year month
0 2024-03-15 2024 3
1 2023-11-20 2023 11
2 2024-05-10 2024 5
استخدام طريقة strftime()
توفر طريقة strftime()
مرونة أكبر، مما يسمح لك بتخصيص تنسيق الإخراج. هذا مفيد بشكل خاص عندما تحتاج إلى تمثيل نصي محدد للسنة والشهر للإبلاغ أو لأغراض أخرى.
import pandas as pd
data = {'date': pd.to_datetime(['2024-03-15', '2023-11-20', '2024-05-10'])}
df = pd.DataFrame(data)
df['year'] = df['date'].dt.strftime('%Y')
df['month'] = df['date'].dt.strftime('%m') # استخدم '%b' لاسم الشهر المختصر، '%B' للاسم الكامل
print(df)
سيكون الناتج:
date year month
0 2024-03-15 2024 03
1 2023-11-20 2023 11
2 2024-05-10 2024 05
تذكر مراجعة وثائق strftime()
في بايثون للحصول على قائمة كاملة بأكواد التنسيق.
الوصول المباشر باستخدام DatetimeIndex
إذا كان عمود “التاريخ” لديك بالفعل DatetimeIndex
، فيمكنك الوصول مباشرة إلى سمات السنة والشهر. على الرغم من أنها أقل شيوعًا، إلا أنها قد تكون فعالة إذا كانت بياناتك بهذا التنسيق بالفعل.
import pandas as pd
data = {'date': pd.to_datetime(['2024-03-15', '2023-11-20', '2024-05-10'])}
df = pd.DataFrame(data)
date_index = pd.DatetimeIndex(df['date'])
df['year'] = date_index.year
df['month'] = date_index.month
print(df)
ينتج هذا نفس الإخراج مثل المثال الأول. ومع ذلك، فإن هذه الطريقة أقل تفضيلًا بشكل عام ما لم تكن تعمل بالفعل مع كائن DatetimeIndex
.
الخاتمة: يوفر مُحسِّن .dt
النهج الأكثر إيجازًا وفعالية في معظم السيناريوهات. توفر strftime()
تحكمًا أكبر في التنسيق، بينما يكون الوصول المباشر إلى DatetimeIndex
مفيدًا حسب الحالة. اختر الطريقة التي تناسب احتياجاتك وأسلوب الترميز الخاص بك بشكل أفضل. تأكد دائمًا من أن عمود “التاريخ” الخاص بك من نوع datetime باستخدام pd.to_datetime()
إذا لزم الأمر.