Mohamed Elnemr نشر 30 أغسطس 2021 أرسل تقرير نشر 30 أغسطس 2021 (معدل) لدي بيانات على هيئة dataframe حيث تحتوي علي عمود به التاريخ على الشكل التالي: 1/1/2021 والذي يتم تعريفة تلقائية بالنوع object قمت باستخدام الكود التالي لتحويل نوعه : df['DOB'] = pd.to_datetime(df['DOB']) >>> dtype: DOB datetime64[ns] لكن شكله تحول لهذا الشكل 2021-08-26. أريد أن أقوم بتحويله بحيث يكون على هذا الشكل 08/26/2021، كيف يمكنني فعل هذا؟ تم التعديل في 30 أغسطس 2021 بواسطة Mohamed Elnemr 2 اقتباس
0 Ahmed Sharshar نشر 30 أغسطس 2021 أرسل تقرير نشر 30 أغسطس 2021 يمكنك استخدام الدالة dt.strftime حيث تقوم بتحويل التاريخ الى أي شكل تريده، الاكواد التالية توضح كيف يمكن استخدامها: import pandas as pd #انشاء العمود الذي يحتوى على التاريخ df = pd.DataFrame({'DOB': {0: '26/8/2021', 1: '26/8/2021'}}) print (df) DOB 0 26/8/2021 1 26/8/2021 #تحويله الى النوع datetime df['DOB'] = pd.to_datetime(df.DOB) print (df) DOB 0 2021-08-26 1 2021-08-26 #تحويل شكل التاريخ للشكل الذي تريد df['DOB1'] = df['DOB'].dt.strftime('%m/%d/%Y') print (df) DOB DOB1 0 2021-08-26 08/26/2021 1 2021-08-26 08/26/2021 كذلك يمكنك استخدامها بشكل مختصر كالتالي: df['BOD'] = pd.to_datetime(df["BOD"].dt.strftime('%Y-%m')) اقتباس
0 Ali Haidar Ahmad نشر 30 أغسطس 2021 أرسل تقرير نشر 30 أغسطس 2021 يمكنك القيام بذلك من خلال الدالة strftime: import pandas as pd df = pd.DataFrame({"Date": ["26-12-2007", "27-12-2007", "28-12-2007"]}) df # لاحظ أن ترنيبها هو أيام-شهر-سنة #أي: dd-mm-yy """ Date 0 26-12-2007 1 27-12-2007 2 28-12-2007 """ # إذا أردنا جعلها # yy-mm-dd df["Date"] = pd.to_datetime(df["Date"]).dt.strftime('%Y-%m-%d') df """ Date 0 2007-12-26 1 2007-12-27 2 2007-12-28 """ # إذا أردنا جعلها # mm-dd-yy df["Date"] = pd.to_datetime(df["Date"]).dt.strftime('%m-%d-%Y') df """ Date 0 12-26-2007 1 12-27-2007 2 12-28-2007 """ أيضاً تمكنك هذه الدالة من تغيير شكل الفاصل بينهم: import pandas as pd df = pd.DataFrame({"Date": ["26-12-2007", "27-12-2007", "28-12-2007"]}) df """ Date 0 26-12-2007 1 27-12-2007 2 28-12-2007 """ # لتغييره إلى باكسلاش "/" df["Date"] = pd.to_datetime(df["Date"]).dt.strftime('%Y/%m/%d') df """ Date 0 2007/12/26 1 2007/12/27 2 2007/12/28 """ كما يمكنك القيام بذلك بالشكل التالي من خلال الوسيطة dayfirst بحيث عند ضبطها على False يكون اليوم في النهاية أو ضبطها على True ليكون في البداية وهذه هي أبسط وأسهل طريقة: import pandas as pd df = pd.DataFrame({"Date": ["26-12-2007", "27-12-2007", "28-12-2007"]}) df df["Date"]=pd.to_datetime(df["Date"].astype(str), dayfirst = False) df """ Date 0 2007-12-26 1 2007-12-27 2 2007-12-28 """ 1 اقتباس
0 عبدالباسط ابراهيم نشر 31 أغسطس 2021 أرسل تقرير نشر 31 أغسطس 2021 أفترض أن عمود DOB الخاص بك بالفعل من النوع datetime64 حيث أن بالفعل قمت بتحويله ولكن تحتاج لتعديل ال format فقط من خلال style.format كالمثال التالي df DOB 0 2019-07-03 1 2019-08-03 2 2019-09-03 3 2019-10-03 لاحظ ال format قبل التعديل df.style.format({"DOB": lambda t: t.strftime("%m/%d/%Y")}) ستصبح mm/dd/yyyy df.style.format({"DOB": lambda t: t.strftime("%d-%m-%Y")}) ستصبح dd-mm-yyyy 1 اقتباس
السؤال
Mohamed Elnemr
لدي بيانات على هيئة dataframe حيث تحتوي علي عمود به التاريخ على الشكل التالي: 1/1/2021 والذي يتم تعريفة تلقائية بالنوع object
قمت باستخدام الكود التالي لتحويل نوعه :
df['DOB'] = pd.to_datetime(df['DOB']) >>> dtype: DOB datetime64[ns]
لكن شكله تحول لهذا الشكل 2021-08-26.
أريد أن أقوم بتحويله بحيث يكون على هذا الشكل 08/26/2021، كيف يمكنني فعل هذا؟
تم التعديل في بواسطة Mohamed Elnemr3 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.