Python 大熊猫:按未知时间段分组
我有一个不同时间段的数据集。我想按id和时间段对它进行分组,但是:我不知道每个时间段有多长,甚至不知道它何时开始。我肯定知道一件事:当两个时间戳之间的差值大于两分钟时,新的时间段开始 示例:这里我们有两个时间段: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
- 从
到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"])