我有一个时间索引的DataFrame看起来像这样:
>>> df
A
index
2019-07-13 13:01:27.100 1
2019-07-13 13:01:27.674 2
2019-07-13 13:01:28.233 4
2019-07-13 13:01:28.534 1
2019-07-13 13:01:29.005 6
2019-07-13 13:01:29.732 7
2019-07-13 13:01:35.353 1
2019-07-13 13:01:35.547 9
2019-07-13 13:01:36.125 2
2019-07-13 13:01:36.626 3
2019-07-13 13:01:37.046 4
2019-07-13 13:01:37.734 7
2019-07-13 13:01:43.156 4
2019-07-13 13:01:43.523 6
2019-07-13 13:01:44.291 2
2019-07-13 13:01:44.784 5
2019-07-13 13:01:50.046 3
2019-07-13 13:01:50.563 8
2019-07-13 13:01:51.912 5
我想创建一个组,其中所包含的数据点的间隔不超过5秒。例如,第一组从13:01:27.100到13:01:29.732,第二组从13:01:35.353到13:01:37.734,依此类推...
是否有针对大型数据集的快速方法?
答案 0 :(得分:2)
通常在diff
和groupby
的帮助下完成:
df['group'] = df.index.to_series().diff().gt('5sec').cumsum()
输出:
A group
index
2019-07-13 13:01:27.100 1 0
2019-07-13 13:01:27.674 2 0
2019-07-13 13:01:28.233 4 0
2019-07-13 13:01:28.534 1 0
2019-07-13 13:01:29.005 6 0
2019-07-13 13:01:29.732 7 0
2019-07-13 13:01:35.353 1 1
2019-07-13 13:01:35.547 9 1
2019-07-13 13:01:36.125 2 1
2019-07-13 13:01:36.626 3 1
2019-07-13 13:01:37.046 4 1
2019-07-13 13:01:37.734 7 1
2019-07-13 13:01:43.156 4 2
2019-07-13 13:01:43.523 6 2
2019-07-13 13:01:44.291 2 2
2019-07-13 13:01:44.784 5 2
2019-07-13 13:01:50.046 3 3
2019-07-13 13:01:50.563 8 3
2019-07-13 13:01:51.912 5 3
答案 1 :(得分:0)
我建议您使用 Grouper 类,请查看 freq 参数。 https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Grouper.html