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

حساب المدة بين تاريخين بالساعات والدقائق في pandas

Mohamed Elnemr

السؤال

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

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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...