【发布时间】:2015-07-04 17:01:09
【问题描述】:
我有一个格式如下的文件:
20150426010203 name1
20150426010303 name2
20150426010307 name3
20150426010409 name1
20150426010503 name4
20150426010510 name1
我有兴趣在列表中查找 name1 出现之间的时间差,然后计算此类出现的频率(例如,delta time = 1s 出现 20 time,delta time = 30s 出现 1 time 等)。第二个问题是如何找到每分钟/小时/天的事件数。
我发现所有的时差是通过使用
pd.to_datetime(pd.Series([time]))
将每个字符串转换为日期时间格式并将所有值放在名为“times”的列表中。然后我遍历列表:
new=[x - times[i - 1] for i, x in enumerate(times)][1:]
结果列表是这样的:
dtype: timedelta64[ns], 0 00:00:50
dtype: timedelta64[ns], 0 00:00:10
dtype: timedelta64[ns], 0 00:00:51
dtype: timedelta64[ns], 0 00:00:09
dtype: timedelta64[ns], 0 00:00:50
dtype: timedelta64[ns], 0 00:00:11
任何进一步计算频率的尝试都会导致“TypeError:'Series'对象是可变的,因此它们不能被散列”错误。而且我不确定在哪里可以找到如何计算每分钟或任何其他时间单位的事件数。
显然,我对 Python 中的 datetime 没有太多经验,所以任何指针都将不胜感激。
【问题讨论】:
-
每个问题确实应该是 1 个问题
-
显然,您已经知道要使用 to_datetime ... 您应该将您的列更改为该值。听起来您想重新采样(使用 aggfunc=len)...但不清楚,因为您没有包含预期的结果。