【发布时间】:2019-08-16 19:45:41
【问题描述】:
这是示例数据:
| group | unix_time |
| 1 | 1565938335 | # 6:52:15 AM
| 1 | 1565938350 | # 6:52:30 AM
| 1 | 1565938390 | # 6:53:10 AM
这是代码。
df['datetime'] = pd.to_datetime(df['unix_time'], unit='s') #convert unix time to datetime
for g, t in df.groupby(['group', pd.Grouper(freq='60s', key='datetime')]):
print(g, t)
以上代码将数据分为2组:
- 第 1 组:第 1 行和第 2 行
- 第 2 组:第 3 行
原因是,在 Grouper() 函数中,freq = '60s' 将从分钟开始(6:52:00, 6:53:00)开始计算,而不是6:52:15。 Grouper( ) 使用默认时间戳:
timestamp 6:52:00
timpstamp 6:53:00
但是,我想把它们放在同一个组中,只要时差在 60 秒以内(6:52:15 AM 和 6:53:10 AM 都在 60 秒以内)
我阅读了 Grouper 手册页,但似乎没有这样的选项。如何修改代码?
【问题讨论】:
-
剩余数据的开始时间如何确定?
-
@zaraki:例如,假设在早上 6:53:15 之后有第 4 行(仍属于第 1 组),则它成为新的开始时间。也就是说,第 1-3 行是 1.1 组,第 4 行是 1.2 组