熊猫时间索引DataFrame按时差分组

时间:2020-03-09 21:12:39

标签: python-3.x pandas

我有一个时间索引的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,依此类推...

是否有针对大型数据集的快速方法?

2 个答案:

答案 0 :(得分:2)

通常在diffgroupby的帮助下完成:

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