我有一个时间索引的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,依此类推...
是否有针对大型数据集的快速方法?
问题来源:stackoverflow
通常是在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
回答来源:stackoverflow
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。