اذهب إلى المحتوى

السؤال

نشر

لدي بيانات تحتوى على التاريخ كالتالي:

import pandas as pd

data = {'start_date': [pd.Timestamp('2021-01-24 13:03:12.050000'), pd.Timestamp('2021-01-27 11:57:18.240000'), pd.Timestamp('2021-01-23 10:07:47.660000')],
        'end_date': [pd.Timestamp('2021-01-26 23:41:21.870000'), pd.Timestamp('2021-01-27 15:38:22.540000'), pd.Timestamp('2021-01-23 18:50:41.420000')]}

df = pd.DataFrame(data)

قمت بعمل عمود لحساب الفرق بين تاريخين كالتالي:

df['diff'] = df['end_date'] - df['start_date']

لكنة يظهر لي خانة تدعى "days" عندما يكون الفرق بين التاريخين أكبر من 24 ساعة:

          start_date            end_ date             diff
0 2021-01-24 13:03:12.050 2021-01-26 23:41:21.870 2 days 10:38:09.820000
1 2021-01-27 11:57:18.240 2021-01-27 15:38:22.540 0 days 03:41:04.300000
2 2021-01-23 10:07:47.660 2021-01-23 18:50:41.420 0 days 08:42:53.760000

كيف يمكنني حساب الفرق بين الأيام دون ظهور العمود days، بحيث يكون الفرق فقط في شكل ساعات ودقائق؟

Recommended Posts

  • 0
نشر

يمكنك استخدام as_type لتغيير شكل الخرج "الفرق" للشكل الذي تريده ببساطة كالتالي:

import pandas
df = pandas.DataFrame(columns=['start_date','end_date','ans'])
df.start_date = [pandas.Timestamp('2021-01-24 13:03:12.050000'), pandas.Timestamp('2021-01-27 11:57:18.240000'), pandas.Timestamp('2021-01-23 10:07:47.660000')]
df.end_date = [pandas.Timestamp('2021-01-26 23:41:21.870000'), pandas.Timestamp('2021-01-27 15:38:22.540000'), pandas.Timestamp('2021-01-23 18:50:41.420000')]
(df.end_date-df.start_date).astype('timedelta64[h]')

وتكون الإجابة على الشكل التالي:

0    58
1     3
2     8
dtype: float64

لاحظ أنه لا وجود للعمود days وانما تم تحويلها الى ساعات.

  • 0
نشر (معدل)

حل آخر:

t1 = pd.to_datetime('1/1/2015 01:00')
t2 = pd.to_datetime('1/1/2015 03:30')
# إذا كنت تريد الساعات 
h=pd.Timedelta(t2 - t1).seconds / 3600.0
# إذا كنت تريد الدقائق
m=pd.Timedelta(t2 - t1).seconds / 60.0

 

تم التعديل في بواسطة Ali Haidar Ahmad

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...