Python 大熊猫:按未知时间段分组

Python 大熊猫:按未知时间段分组,python,python-3.x,pandas,pandas-groupby,Python,Python 3.x,Pandas,Pandas Groupby,我有一个不同时间段的数据集。我想按id和时间段对它进行分组,但是:我不知道每个时间段有多长,甚至不知道它何时开始。我肯定知道一件事:当两个时间戳之间的差值大于两分钟时,新的时间段开始 示例:这里我们有两个时间段: 从05:36:07到05:36:42 从21:54:16到21:54:37 数据: 这应该以如下方式结束: id,timeserie,value 00b0f3,1,19 00b0f3,2,24 有没有熊猫的助手,可以让我在两个时间间隔内检测出最大的时间段 谢谢 尝试使用cumsu

我有一个不同时间段的数据集。我想按id和时间段对它进行分组,但是:我不知道每个时间段有多长,甚至不知道它何时开始。我肯定知道一件事:当两个时间戳之间的差值大于两分钟时,新的时间段开始

示例:这里我们有两个时间段:

  • 05:36:07
    05:36:42
  • 21:54:16
    21:54:37
数据:

这应该以如下方式结束:

id,timeserie,value
00b0f3,1,19
00b0f3,2,24
有没有熊猫的助手,可以让我在两个时间间隔内检测出最大的时间段


谢谢

尝试使用
cumsum
和带有
groupby
的布尔测试条件:

df.groupby(['id',
           (df['timestamp'].diff() > pd.Timedelta(minutes=2)).cumsum()], 
           as_index=False)['value'].sum()
输出:

       id  value
0  00b0f3     19
1  00b0f3     24

您可以使用
groupby
pd.Grouper
如下:

df = df.groupby(["id",pd.Grouper(key="timestamp", freq='2min')]).sum()
import pandas as pd

df = pd.read_csv("D:/tmp/data.csv")
df["timestamp"] = pd.to_datetime(df["timestamp"])
结果将是:

>>> df
                            value
id     timestamp                 
00b0f3 2018-05-21 05:36:00     19
       2018-05-21 21:54:00     24
如果希望将
id
作为单独的列,可以在代码行下方运行:

df.reset_index(inplace=True)
然后,生成的数据帧将是:

>>> df
       id           timestamp  value
0  00b0f3 2018-05-21 05:36:00     19
1  00b0f3 2018-05-21 21:54:00     24
注 我将您的数据粘贴到一个
csv
文件中,然后导入它并创建了
DataFrame
,如下所示:

df = df.groupby(["id",pd.Grouper(key="timestamp", freq='2min')]).sum()
import pandas as pd

df = pd.read_csv("D:/tmp/data.csv")
df["timestamp"] = pd.to_datetime(df["timestamp"])