【问题标题】:How to create subdataframes based on timestep conditions? [duplicate]如何根据时间步长条件创建子数据帧? [复制]
【发布时间】:2023-02-21 18:28:13
【问题描述】:

我有一个看起来像这样的数据框:

df
                         Pression
13/01/2022  09:01:02        3500
13/01/2022  09:01:13        3650
13/01/2022  09:01:24        4248
13/01/2022  09:01:35        4259
13/01/2022  09:01:46        4270
13/01/2022  11:43:28        345
13/01/2022  11:43:39        478
13/01/2022  11:43:50        589
15/01/2022  08:31:14        2048
15/01/2022  08:31:25        2574
15/01/2022  08:31:36        3659
15/01/2022  08:31:47        3784
15/01/2022  08:31:58        3968
15/01/2022  08:32:09        4009

我想根据时间步长创建子数据框,如果时间步长优于11 secondes,则意味着创建了一个子数据框:

EXPECTED OUTPUT:

df_1
                         Pression
13/01/2022  09:01:02        3500
13/01/2022  09:01:13        3650
13/01/2022  09:01:24        4248
13/01/2022  09:01:35        4259
13/01/2022  09:01:46        4270

df_2
                         Pression
13/01/2022  11:43:28        345
13/01/2022  11:43:39        478
13/01/2022  11:43:28        345
13/01/2022  11:43:39        478
13/01/2022  11:43:50        589


df_3
                         Pression
15/01/2022  08:31:14        2048
15/01/2022  08:31:25        2574
15/01/2022  08:31:36        3659
15/01/2022  08:31:47        3784
15/01/2022  08:31:58        3968
15/01/2022  08:32:09        4009

不使用循环我怎么能做到这一点?我已经在使用数据框列表,这在计算上可能很昂贵。

【问题讨论】:

    标签: python pandas time-series


    【解决方案1】:

    创建数据框列表:

    df.index = pd.to_datetime(df.index)
    
    #convert DatetimeIndex to Series for possible get difference
    s = df.index.to_series()
    #create groups with cumulative sum
    dfs = dict(tuple(df.groupby(s.diff().gt('11 s').cumsum())))
    
    print (dfs[0])
                         Pression
    2022-01-13 09:01:02      3500
    2022-01-13 09:01:13      3650
    2022-01-13 09:01:24      4248
    2022-01-13 09:01:35      4259
    2022-01-13 09:01:46      4270
    
    
    print (dfs[1])
                         Pression
    2022-01-13 11:43:28       345
    2022-01-13 11:43:39       478
    2022-01-13 11:43:50       589
    
    print (dfs[2])
                         Pression
    2022-01-15 08:31:14      2048
    2022-01-15 08:31:25      2574
    2022-01-15 08:31:36      3659
    2022-01-15 08:31:47      3784
    2022-01-15 08:31:58      3968
    2022-01-15 08:32:09      4009
    

    【讨论】:

      猜你喜欢
      • 2022-11-29
      • 2022-07-11
      • 2019-11-06
      • 1970-01-01
      • 1970-01-01
      • 2020-11-21
      • 1970-01-01
      • 2021-03-18
      • 1970-01-01
      相关资源
      最近更新 更多