Dataframe groupby timestamp interval, non-overlapping, and sum of column values

问题描述 投票:0回答:0

如果另一列的值高于特定阈值,我正在尝试对给定时间戳间隔的条目进行分组,不重叠。

下面是一个简化的例子。

我有一个这样的数据框:

     timestamp      col1  col2 col3  col4
0   2317614314  1.551823     1    4    44
1   2317614409  1.206112     3    3    25
2   2317614429  1.022747     2    3    48
3   2317614608  2.082569     3    3    59
4   2317622053  2.260681     1    2    15
5   2317622208  2.355770     2    4    46

我想按照以下规则对数据进行分组:

  • 行只属于一组
  • 与第一个时间戳相关的间隔中的行
  • col1 的值之和必须大于阈值

例子:

假设间隔是 200,阈值是 4:

  • 第0、1、2行在第一个时间戳后的200区间内(2317614314<=timestamp<=2317614314+200)
  • col1的总和小于阈值(1.551823+1.206112+1.022747<4)
  • 所以它忽略第 0 行并继续
  • 第1、2、3行在第一个时间戳后的200区间内(2317614409<=timestamp<=2317614409+200)
  • col1的总和高于阈值(1.206112+1.022747+2.082569>4)
  • 由于行不能超过一组,因此将从第 4 行开始
  • 第4,5行在第一个时间戳(2317622053<=timestamp<=2317622053+200)
  • col1的总和高于阈值(2.260681+2.355770>4)

所以最后我会得到 2 组:

  • 第 1、2、3 行
  • 第 4,5 行

一些注意事项:

  • 我正在使用 Dask
  • 非常欢迎使用 Pandas 的解决方案
  • 时间戳在 ps 中,因此不使用“datetime64”,因为 pandas 只支持 ns 精度
python pandas dataframe group-by dask
© www.soinside.com 2019 - 2024. All rights reserved.