分裂熊猫

时间:2020-07-07 10:26:34

标签: python python-3.x pandas

我有一个包含时间戳记的pandas Dataframe,我正在寻找一种方法,根据它们的时间戳记是否在下一个和上一个条目的1分钟间隔内,将多行一起批处理。我知道我可能可以遍历每一行并进行简单的比较,尽管我正在寻找一种更快的方法。数据框的行根据时间排序。

换句话说,我希望每个批处理都满足以下属性:与任何相邻行(上一个和下一个)相隔的行时间戳不得超过1分钟。如何转换上面的代码以使其更快?

2 个答案:

答案 0 :(得分:1)

您在寻找这个吗?

data['batch'] = data.time.transform(lambda x: x - x.shift() > pd.Timedelta('1m')).cumsum()

         time                     batch
0   2020-06-29 16:47:34.325726420   0
1   2020-06-29 16:47:55.871976370   0
2   2020-06-29 16:48:53.704053189   0
3   2020-06-29 16:49:41.253228187   0
4   2020-06-29 16:50:42.870308699   1
5   2020-06-29 16:50:46.870308699   1
6   2020-06-29 16:51:30.870318699   1
7   2020-06-29 16:52:32.830308699   2

说明:假设对time列进行了排序,我们将每个值与下一个值进行比较,并检查距离是否大于一分钟。使用cumsum对布尔值求和以返回批号。

答案 1 :(得分:0)

您可能正在寻找pandas.date_range方法:see the docs