我有一个包含时间戳记的pandas Dataframe,我正在寻找一种方法,根据它们的时间戳记是否在下一个和上一个条目的1分钟间隔内,将多行一起批处理。我知道我可能可以遍历每一行并进行简单的比较,尽管我正在寻找一种更快的方法。数据框的行根据时间排序。
换句话说,我希望每个批处理都满足以下属性:与任何相邻行(上一个和下一个)相隔的行时间戳不得超过1分钟。如何转换上面的代码以使其更快?
答案 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