【问题标题】:Calculating hours between the two dates as per range根据范围计算两个日期之间的小时数
【发布时间】:2020-02-10 07:50:34
【问题描述】:

我有两列 startDate 和 endDate 我需要计算这些日期之间从 0 到 23 的小时数 例如,开始日期是 2000-12-05 10:00:00,结束日期是 2001-01-15 15:00:00 我需要计算在 python 中这两个日期之间从 0 到 23 小时发生了多少次

我计算了日期之间的差异,并从差异中计算出小时数。 之后我计划从 startDate 到 startDateHour * hours 提取开始时间以获得 endHour 并遍历字典以增加计数,但是还有其他方法可以做到这一点吗?

df['diff'] = df['endDate'] - df['startDate']
df['hours']= df['diff'] / np.timedelta64(1, 'h')

【问题讨论】:

    标签: python pandas numpy dataframe


    【解决方案1】:
    from datetime import datetime
    
     X = (datetime.strptime(2020-01-05 01:19:49, '%Y-%m-%d %h:%m:%s') - 
          datetime.strptime(2020-01-02 06:12:44, '%Y-%m-%d %h:%m:%s'))
    
     print(X)
    

    【讨论】:

      【解决方案2】:

      你可以这样做:

      >>> df['diff'] = df['endDate'] - df['startDate']
      >>> df['hours'] = df['diff'].dt.components.hours
      

      考虑到这些是pd.Timedelta 对象。

      >>> idx = pd.date_range('2018-01-01', periods=5, freq='H')
      >>> df = pd.DataFrame({'ts':ts, 'ts_2':ts + pd.Timedelta(hours=1)})
      >>> df
      
                         ts                ts_2
      0 2018-01-01 00:00:00 2018-01-01 01:00:00
      1 2018-01-01 01:00:00 2018-01-01 02:00:00
      2 2018-01-01 02:00:00 2018-01-01 03:00:00
      3 2018-01-01 03:00:00 2018-01-01 04:00:00
      4 2018-01-01 04:00:00 2018-01-01 05:00:00
      >>> df['hour'] = (df['ts_2'] - df['ts']).dt.components.hours
      
      >>> df
      
                         ts                ts_2  hour
      0 2018-01-01 00:00:00 2018-01-01 01:00:00     1
      1 2018-01-01 01:00:00 2018-01-01 02:00:00     1
      2 2018-01-01 02:00:00 2018-01-01 03:00:00     1
      3 2018-01-01 03:00:00 2018-01-01 04:00:00     1
      4 2018-01-01 04:00:00 2018-01-01 05:00:00     1
      
      
      

      【讨论】:

      • 这不会给出从 0 开始的小时数吧?我想要 0: 15, 1: 20, 3: 20, ....23: 20 之类的东西,这是每小时的小时数
      猜你喜欢
      • 2022-07-22
      • 1970-01-01
      • 2019-02-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多