【问题标题】:Count number of rows between minute time intervals - Python计算分钟时间间隔之间的行数 - Python
【发布时间】:2018-02-06 04:51:54
【问题描述】:

我想使用 groupby 函数以 30 分钟的时间间隔计算行数,从第一个单元格向下列开始计算 30 分钟的间隔。这是我所拥有的:

    LOGINID DATE    TIME
    mickey  1/1/2018    0 days 08:54:00.000000000
    mickey  1/1/2018    0 days 08:57:00.000000000
    mickey  1/1/2018    0 days 09:01:00.000000000
    mickey  1/1/2018    0 days 09:19:00.000000000
    mickey  1/1/2018    0 days 09:26:00.000000000
    mickey  1/1/2018    0 days 09:41:00.000000000
    mickey  1/1/2018    0 days 10:03:00.000000000
    mickey  1/1/2018    0 days 11:35:00.000000000
    mickey  1/1/2018    0 days 11:36:00.000000000
    mickey  1/2/2018    0 days 09:54:00.000000000
    mickey  1/2/2018    0 days 10:21:00.000000000
    minnie  1/1/2018    0 days 09:00:00.000000000
    minnie  1/1/2018    0 days 10:20:00.000000000
    minnie  1/1/2018    0 days 10:14:00.000000000
    minnie  1/1/2018    0 days 10:51:00.000000000
    minnie  1/1/2018    0 days 11:05:00.000000000
    minnie  1/1/2018    0 days 11:24:00.000000000
    minnie  1/2/2018    0 days 02:20:00.000000000
    minnie  1/2/2018    0 days 02:25:00.000000000
    minnie  1/2/2018    0 days 02:39:00.000000000

This is what I want: 
LOGINID DATE    TIME    intense_cnt
mickey  1/1/2018    0 days 08:54:00.000000000   4
mickey  1/1/2018    0 days 08:57:00.000000000   4
mickey  1/1/2018    0 days 09:01:00.000000000   3
mickey  1/1/2018    0 days 09:19:00.000000000   3
mickey  1/1/2018    0 days 09:26:00.000000000   2
mickey  1/1/2018    0 days 09:41:00.000000000   2
mickey  1/1/2018    0 days 10:03:00.000000000   1
mickey  1/1/2018    0 days 11:35:00.000000000   2
mickey  1/1/2018    0 days 11:36:00.000000000   2
mickey  1/2/2018    0 days 09:54:00.000000000   2
mickey  1/2/2018    0 days 10:21:00.000000000   1
minnie  1/1/2018    0 days 09:00:00.000000000   1
minnie  1/1/2018    0 days 10:20:00.000000000   2
minnie  1/1/2018    0 days 10:14:00.000000000   2
minnie  1/1/2018    0 days 10:51:00.000000000   2
minnie  1/1/2018    0 days 11:05:00.000000000   2
minnie  1/1/2018    0 days 11:24:00.000000000   1
minnie  1/2/2018    0 days 02:20:00.000000000   3
minnie  1/2/2018    0 days 02:25:00.000000000   3
minnie  1/2/2018    0 days 02:39:00.000000000   3

所以对于第一行,我从 8 点 54 分(即 9 点 24 分)开始往下数 30 分钟,这样一共有 4 行。 然后对于第二行,我从 8:57 向下数 30 分钟,也就是 9:27,这将给我总共 4 行 然后对于第三排,我从 9:01 开始倒数 30 分钟,也就是 9:31,这将给我总共 3 排等等。

有人知道怎么做吗?

非常感谢!

【问题讨论】:

    标签: python pandas time group-by keyword-argument


    【解决方案1】:

    不确定您是否还要计算“当前”日期,因为我认为您的解释不一致。在我的代码中,您可以通过将> 调整为>= 轻松更改它。

    代码

    from datetime import timedelta
    from dateutil import parser
    import pandas as pd
    
    dates = [
    "2018-2-1 08:54:00",
    "2018-2-1 08:57:00",
    "2018-2-1 09:01:00",
    "2018-2-1 09:19:00",
    "2018-2-1 09:26:00",
    "2018-2-1 09:41:00",
    "2018-2-1 10:03:00",
    "2018-2-1 11:35:00",
    "2018-2-1 11:36:00",
    "2018-2-1 09:54:00",
    "2018-2-1 10:21:00",
    "2018-2-1 09:00:00",
    "2018-2-1 10:20:00",
    "2018-2-1 10:14:00",
    "2018-2-1 10:51:00",
    "2018-2-1 11:05:00",
    "2018-2-1 11:24:00",
    "2018-2-2 02:20:00",
    "2018-2-2 02:25:00",
    "2018-2-2 02:39:00"]
    
    dates = pd.DataFrame([parser.parse(date) for date in dates])
    
    counts = [
        int(dates[(dates > date)
            & (dates <= (date + timedelta(minutes=30)))].count())
        for date in dates[0]
    ]
    

    结果

    [4, 4, 2, 2, 2, 2, 3, 1, 0, 4, 1, 3, 1, 2, 1, 2, 2, 2, 1, 0]
    

    【讨论】:

      猜你喜欢
      • 2021-05-12
      • 2019-02-03
      • 2016-04-15
      • 1970-01-01
      • 2019-09-28
      • 1970-01-01
      • 2022-01-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多