python - 将轮类数据(开始和结束时间)拆分为每小时数据

标签 python pandas

我有一个 df 如下所示,它显示了一个人何时开始轮类、结束轮类、工作小时数和日期。

Business_Date   Number PayTimeStart PayTimeEnd          Hours
0   2019-05-24  1       2019-05-24 11:00:00 2019-05-24 12:15:00 1.250
1   2019-05-24  2       2019-05-24 12:30:00 2019-05-24 13:30:00 1.00

现在我要做的是将其分解为每小时格式,这样我就知道在 11:00 - 12:00 之间使用了多少小时

因此,在我的脑海中,对于上述内容,我想将 11 点到 12 点之间的 1 小时放入 11:00 的容器中,其余 0.25 小时放入下一个 12 点的容器中

所以我最终会得到类似的东西

    Business Date   Time Hour
0   2019-05-24  11:00 1
1   2019-05-24  12:00 0.75
2   2019-05-24  13:00 0.5

最佳答案

一个想法是使用分钟 - 首先使用列表理解和扁平化 Series,然后按 hours 分组,用 hour 进行计数GroupBy.size最后除以 60 得到最后几个小时:

s = pd.Series([z for x, y in zip(df['Pay Time Start'], 
                                 df['Pay Time End'] - pd.Timedelta(60, unit='s')) 
                 for z in pd.date_range(x, y, freq='Min')])

df = (s.groupby([s.dt.date.rename('Business Date'), s.dt.hour.rename('Time')])
       .size()
       .div(60)
       .reset_index(name='Hour'))
print (df)
  Business Date  Time  Hour
0    2019-05-24    11  1.00
1    2019-05-24    12  0.75
2    2019-05-24    13  0.50

如果您需要按位置或 ID 分组

 df1 = pd.DataFrame([(z, w) for x, y, w in zip(df['Pay Time Start'], 
                                              df['Pay Time End'] - pd.Timedelta(60, unit='s'), 
                                              df['Location']) for z in pd.date_range(x, y, freq='Min')], 
                   columns=['Date','Location']) 

 df = (df1.groupby([df1['Date'].dt.date.rename('Business Date'), 
                       df1['Date'].dt.hour.rename('Time'), df1['Location']]) 
          .size() .div(60) .reset_index(name='Hour'))

关于python - 将轮类数据(开始和结束时间)拆分为每小时数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56341590/

相关文章:

python - 解析包含不同长度Python的时间戳

python - 滑动窗口上的 Pandas 滚动计算(不均匀间隔)

python - 无法从某些盒状容器中获取标题

python - statsmodels.tsa.arima_model : TypeError: 'Series' object is not callable

python - 从字符串中仅删除完全匹配的子字符串

python - Pandas数据框如何删除和重命名列

python - 有没有办法从所有 30 个数据帧中只提取一列?

python - 从列表中返回半唯一值

python - IO错误: [Errno 13] Permission denied: I do have permissions?

python - Pandas DataFrame 高效的数据移动