【发布时间】:2014-07-20 21:29:43
【问题描述】:
我有一个时间序列数据框df 看起来像这样(时间序列发生在同一天,但跨越不同的时间:
id val
time
2014-04-03 16:01:53 23 14389
2014-04-03 16:01:54 28 14391
2014-04-03 16:05:55 24 14393
2014-04-03 16:06:25 23 14395
2014-04-03 16:07:01 23 14395
2014-04-03 16:10:09 23 14395
2014-04-03 16:10:23 26 14397
2014-04-03 16:10:57 26 14397
2014-04-03 16:11:10 26 14397
我需要从16:00:00 开始每 5 分钟创建一次组。即16:00:00到16:05:00范围内的所有行,新列period的值为1。(每组内的行数不规则,所以我不能简单地切组)
最终,数据应如下所示:
id val period
time
2014-04-03 16:01:53 23 14389 1
2014-04-03 16:01:54 28 14391 1
2014-04-03 16:05:55 24 14393 2
2014-04-03 16:06:25 23 14395 2
2014-04-03 16:07:01 23 14395 2
2014-04-03 16:10:09 23 14395 3
2014-04-03 16:10:23 26 14397 3
2014-04-03 16:10:57 26 14397 3
2014-04-03 16:11:10 26 14397 3
目的是执行一些groupby操作,但是我需要做的操作不包含在pd.resample(how=' ')方法中。所以我必须创建一个period 列来标识每个组,然后执行df.groupby('period').apply(myfunc)。
非常感谢任何帮助或 cmets。
谢谢!
【问题讨论】:
-
df['period'] = df.groupby(pd.TimeGrouper('5Min'))['val'].transform(np.mean)怎么样
标签: python datetime numpy pandas