【发布时间】:2018-06-24 23:40:41
【问题描述】:
也许我找不到它...无论如何,对于 pandas '0.19.2' 有以下内容
问题:
我有一些相关组的定时事件可以通过以下方式生成:
from numpy.random import randint, seed
import pandas as pd
seed(42) # reproducibility
samp_N = 1000
# create times within 3 hours, and 15 random groups
df = pd.DataFrame({'time': randint(0,3*60*60, samp_N),
'group': randint(0, 15, samp_N)})
# make a resample-able index from the seconds time values
df.set_index(pd.TimedeltaIndex(df.time, 's'), inplace=True)
看起来像:
group time
02:01:10 10 7270
00:14:20 13 860
01:29:50 9 5390
01:26:31 13 5191
...
当我尝试对事件重新采样时,我得到了一些不受欢迎的东西
df.resample('5T').count()
group time
00:00:04 28 28
00:05:04 18 18
00:10:04 32 32
...
不幸的是,重采样周期从任意(数据中的第一个)偏移值开始。 如果我将其分组(最终需要),那就更烦人了
df.groupby('group').resample('5T').count()
然后我为每个组获得一个新的偏移量 我想要的是采样窗口的精确开始:
00:00:00 5 ...
00:05:00 17 ...
00:10:00 11 ...
...
有一个建议在:https://stackoverflow.com/a/23966229
df.groupby(pd.TimeGrouper('5Min')).count()
但它也不起作用,因为它也破坏了上面所需的分组。
感谢提示!
【问题讨论】:
-
“但它也不起作用,因为它还破坏了上面所需的分组”是什么意思?你最后的审判似乎对我有好处。尽管您可以将其写为
df.groupby(pd.Grouper(freq='5Min')).count(),因为TimeGrouper上有弃用警告 -
df.groupby(['group', pd.Grouper(freq='5Min')]).count()呢?
标签: python pandas resampling