Python 检查时间序列的连续性

Python 检查时间序列的连续性,python,dataframe,grouping,Python,Dataframe,Grouping,我将数据存储在数据框中。它包含一个包含时间实例的列。请查找显示示例的随附文件 我们正在尝试检查时间分割列中的连续性 所以我基本上要做的是,一旦连续性丢失,就分割数据帧。因此,基本上我们试图实现的是,如果不分割数据帧,检查时间列的行是否在增加我的1分钟。我尝试根据小时进行分组,但这不起作用,因为实例的连续性超过了小时,即持续时间超过一个小时,然后跳到下一个小时 我真的很感谢你的帮助 多谢各位 此代码根据当前和上一个样本之间的时间差生成组ID列表 df.Time_split=pd.to_datet

我将数据存储在数据框中。它包含一个包含时间实例的列。请查找显示示例的随附文件

我们正在尝试检查时间分割列中的连续性

所以我基本上要做的是,一旦连续性丢失,就分割数据帧。因此,基本上我们试图实现的是,如果不分割数据帧,检查时间列的行是否在增加我的1分钟。我尝试根据小时进行分组,但这不起作用,因为实例的连续性超过了小时,即持续时间超过一个小时,然后跳到下一个小时

我真的很感谢你的帮助


多谢各位

此代码根据当前和上一个样本之间的时间差生成组ID列表

df.Time_split=pd.to_datetime(df.Time_split)#将字符串转换为datetime对象
default=datetime.timedelta(分钟=1)#要检查的默认速度
组=[0]#初始组号
prev=df.Time_split[0]#要比较的初始样本
对于范围内的i(1,len(df.Time_split)):#对于第二次输入和以上
delta=df.Time_split[i]-上一次#delta Time
if(默认增量==datetime.timedelta()):#如果差值为零
group.append(group[-1])#当前样本与上一个样本属于同一组
其他:
group.append(组[-1]+1)#创建一个新组
prev=df.Time_split[i]#更新上一个
df['group_number']=group#将列表添加到数据帧
#可选按组拆分:
帧=[df[df['group_number']==x]用于范围内的x(组[-1]+1)]

我对Python3中的Izaak Comelis代码有问题。如果发现这一细微的修改更可靠/可读

def _time_continuity(input_df, datetime_col='datetime', minutes=10):
    '''
    Assumes that the datetime column has already been sorted
        df.sort_values(by=datetime_col)
    '''
    
    default = timedelta(minutes=minutes)
    
    group = [0] # initial group number
    grp_ctr = 0
    
    dt_iter = iter(input_df[datetime_col])
    prev = next(dt_iter) #skip first row
    
    for i in dt_iter: # for second entry and up
        delta = abs(i - prev) # delta time
        
        if (delta <= default): # if difference is at tolerence
            group.append(grp_ctr) # current sample belongs to the same group as previous sample
            
        else:
            grp_ctr += 1
            group.append(grp_ctr)
    
        prev = i # update previous
    
    input_df['time_group'] = group # add the list to the dataframe
    
    if len(set(group)) > 1:
        print(f'There are {len(set(group))} time groups')
        
    return input_df
def时间连续性(输入df,datetime,col='datetime',分钟=10):
'''
假定datetime列已排序
df.sort_值(by=datetime_col)
'''
默认值=时间增量(分钟=分钟)
组=[0]#初始组号
grp\U ctr=0
dt_iter=iter(输入[datetime\u col])
上一行=下一行(dt#u iter)#跳过第一行
对于dt#U iter中的i:#对于第二次进入和更新
增量=绝对值(i-上一个)#增量时间
如果(δ1:
打印(f'有{len(set(group))}个时间组')
返回输入值
注: 您可以控制timedelta值创建组的方式。在:

if (delta <= default):
if(delta=default…,它将确定是否创建了一个新组。在我的用例中,我不关心时间delta是否小于10分钟。请记住><方法将对重复的时间戳(delta==0)进行分组。如果要捕获这些时间戳,请使用==

abs(i-prev)确保日期时间序列的排序不会干扰结果asc/desc