Python 检查数据中是否存在日期跳过

Python 检查数据中是否存在日期跳过,python,pandas,time,Python,Pandas,Time,我有一个数据集,它的索引由时间戳组成。这是熊猫系列,如下所示: Time 2013-09-17 22:08:11 0 2013-09-17 22:08:18 0 2013-09-17 22:08:26 0 2013-09-17 22:08:34 0 2013-09-17 22:08:42 0 2013-09-17 22:08:50

我有一个数据集,它的索引由时间戳组成。这是熊猫系列,如下所示:

Time                           
2013-09-17 22:08:11           0
2013-09-17 22:08:18           0
2013-09-17 22:08:26           0
2013-09-17 22:08:34           0
2013-09-17 22:08:42           0
2013-09-17 22:08:50           0
2013-09-17 22:08:58           0
2013-09-17 22:09:06           0
2013-09-17 22:09:11           0
2013-09-17 22:09:13           0
2013-09-17 22:09:19           0
2013-09-17 22:09:21           0
2013-09-17 22:09:27           0
2013-09-17 22:09:35           0
2013-09-17 22:09:43           0
Name: dummy_frame, dtype: float64
有关时间戳的数据被不规则地记录。现在我想做的是检查这些数据,如果其中有日期跳过或跳转,比如从2013-09-07到2013-12-22。我可以简单地检查第一个和最后一个日期,并相对比较它们。然而,我需要找到这个跳跃发生的地方。有什么简单的方法可以找到它吗


谢谢。

我相信您可以简单地创建一个具有相同日期格式的数据范围,并比较两个列表:

从datetime导入datetime,timedelta 开始日期=日期时间。strptime2013-09-07,%Y-%m-%d 结束日期=日期时间。strTime2013-12-22,%Y-%m-%d 这将创建一个包含完整日期的列表 completeDates=[start_date+timedeltadays=x,范围为0,end_dat-start_date.days+1] completeDates=[d.strftime%Y-%m-%d,用于completeDates中的d]将日期转换为字符串 从数据框索引中获取列表,并删除小时数 myDates=dummy_frame.index.tolist 您的日期可能是datetime obj或字符串 如果字符串 myDates=[d.split[0]表示myDates中的d] 如果日期 myDates=[d.strftime%Y-%m-%d,用于myDates中的d] 创建缺少数据的列表 missingDates=[d表示已完成日期中的d,如果d不在myDates中] 从这个意义上说,missingDates将是一个列表,其中包含所有丢失的日期或从数据帧跳转的日期。请让我知道这是否有帮助

IIUC:

x = #your series
x.index = pd.to_datetime(x.index)
jumps = x.index.dt.date - x.index.shift(1).dt.date
这将创建一个系列,其中jump[i]是jump[i]和jump[i-1]之间的差异。如果要查找jump>1的位置,只需执行以下操作:

x[jump>1]

谢谢你详细的回答。很好的方法,它对我很有效。欢迎你,如果你喜欢,你可以选择这种方法作为你的首选答案,这样更多的人就能找到它。嗨,我想知道在你的方法中,shift1是否会以秒而不是天来改变日期?我很好奇,因为datetime索引也包含秒。当我使用像AttributeError这样的x.index.dt.date命令时,我遇到了一个错误:“DatetimeIndex”对象没有属性“dt”@EnriqueBet shift1不会更改序列的值,它会将序列下移一定量