【问题标题】:Get nearest time previous to current time which is divisible by 5 [duplicate]获取可被5整除的当前时间之前的最近时间[重复]
【发布时间】:2020-05-30 10:22:34
【问题描述】:

我有一个数据框,其中有一列的时间数据格式为 HH:MM:SS。示例数据如下所示,供参考:

Time
09:25:03
09:28:40
09:36:12
09:36:14
09:41:10
09:51:00
09:58:48
10:00:11
10:00:17
10:21:44
10:21:53
10:32:58
11:08:59
11:45:55
11:49:14
12:18:54
12:21:22
13:05:47
13:19:37
13:19:57
13:25:22
14:21:10

我想获得当前时间之前的最近时间,该时间可以被 5 整除。我想要如下输出:

Time        Nearest_Time
09:25:03    09:25:00
09:28:40    09:25:00
09:36:12    09:35:00
09:36:14    09:35:00
09:41:10    09:40:00
09:51:00    09:50:00
09:58:48    09:50:00
10:00:11    10:00:00
10:00:17    10:00:00
10:21:44    10:20:00
10:21:53    10:20:00
10:32:58    10:30:00
11:08:59    11:05:00
11:45:55    11:45:00
11:49:14    11:45:00
12:18:54    12:15:00
12:21:22    12:20:00
13:05:47    13:05:00
13:19:37    13:15:00
13:19:57    13:15:00
13:25:22    13:25:00
14:21:10    14:20:00

【问题讨论】:

    标签: python python-3.x pandas dataframe time


    【解决方案1】:

    您可以将Time 更改为timedelta 并进行正常的算术运算:

    df['Time'] = pd.to_timedelta(df['Time'])
    
    period = pd.to_timedelta('5M')
    df['nearest_past'] = df['Time'] // period * period
    
    # floor also works
    # df['nearest_past'] = df['Time'].dt.floor(period)
    

    输出:

           Time nearest_past
    0  09:25:03     09:25:00
    1  09:28:40     09:25:00
    2  09:36:12     09:35:00
    3  09:36:14     09:35:00
    4  09:41:10     09:40:00
    5  09:51:00     09:50:00
    6  09:58:48     09:55:00
    7  10:00:11     10:00:00
    8  10:00:17     10:00:00
    9  10:21:44     10:20:00
    10 10:21:53     10:20:00
    11 10:32:58     10:30:00
    12 11:08:59     11:05:00
    13 11:45:55     11:45:00
    14 11:49:14     11:45:00
    15 12:18:54     12:15:00
    16 12:21:22     12:20:00
    17 13:05:47     13:05:00
    18 13:19:37     13:15:00
    19 13:19:57     13:15:00
    20 13:25:22     13:25:00
    21 14:21:10     14:20:00
    

    【讨论】:

      【解决方案2】:

      您可以使用dt.floorfreq 设置为5 分钟:

      pd.to_datetime(df.Time).dt.floor('5 min')
      
      0    2020-02-14 09:25:00
      1    2020-02-14 09:25:00
      2    2020-02-14 09:35:00
      3    2020-02-14 09:35:00
      4    2020-02-14 09:40:00
      5    2020-02-14 09:50:00
      6    2020-02-14 09:55:00
      7    2020-02-14 10:00:00
      8    2020-02-14 10:00:00
      9    2020-02-14 10:20:00
      10   2020-02-14 10:20:00
      11   2020-02-14 10:30:00
      12   2020-02-14 11:05:00
      13   2020-02-14 11:45:00
      14   2020-02-14 11:45:00
      15   2020-02-14 12:15:00
      16   2020-02-14 12:20:00
      17   2020-02-14 13:05:00
      18   2020-02-14 13:15:00
      19   2020-02-14 13:15:00
      20   2020-02-14 13:25:00
      21   2020-02-14 14:20:00
      Name: Time, dtype: datetime64[ns]
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-04-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-05-31
        • 2011-07-05
        相关资源
        最近更新 更多