如何获取时间序列DataFrame中超过1分钟缺失的时间戳起止区间?
提取时间序列中缺失时长超1分钟的区间
操作步骤:
- 转换时间列格式:先将字符串类型的datetime列转为pandas的datetime类型,否则无法计算时间差。
import pandas as pd # 示例数据 dic = { 'datetime' : ['23.3.2021 23:18:00', '23.3.2021 23:19:00', '23.3.2021 23:20:00', '23.3.2021 23:25:00', '23.3.2021 23:26:00', '23.3.2021 23:27:00'], 'col1':[31.45,38.361,37.0,31.49,32.891, 41], 'col2':[38.776,38.444,38.945,38.647,39.667,40.0], } df = pd.DataFrame(dic) # 转换为datetime类型,format参数需匹配原始字符串格式 df['datetime'] = pd.to_datetime(df['datetime'], format='%d.%m.%Y %H:%M:%S')
- 计算时间差并筛选异常值:计算相邻时间的差值,筛选出时长超过1分钟的记录。
# 计算相邻时间差,转换为分钟单位 df['time_diff'] = df['datetime'].diff().dt.total_seconds() / 60 # 筛选出时间差大于1分钟的行索引 gap_indices = df[df['time_diff'] > 1].index
- 提取缺失区间:根据筛选出的索引,提取对应缺失区间的开始(前一条记录的时间)和结束(当前记录的时间)。
missing_intervals = [] for idx in gap_indices: start_time = df.loc[idx-1, 'datetime'] end_time = df.loc[idx, 'datetime'] missing_duration = df.loc[idx, 'time_diff'] missing_intervals.append({ '缺失区间开始': start_time, '缺失区间结束': end_time, '缺失时长(分钟)': missing_duration }) # 转为DataFrame查看结果 missing_df = pd.DataFrame(missing_intervals) print(missing_df)
示例输出:
缺失区间开始 缺失区间结束 缺失时长(分钟) 0 2021-03-23 23:20:00 2021-03-23 23:25:00 5.0
内容的提问来源于stack exchange,提问作者Tranquil Oshan
相关产品推荐
相关产品推荐

