如何基于时间戳时段条件删除时间序列DataFrame中的夜间数据?
删除时间序列夜间时段数据的实现方案
假设你的时间序列数据存储在Pandas DataFrame中,索引为Timestamp_UTC(datetime类型),以下是两种高效筛选出每日5:10至19:30时段数据的方法:
方法1:基于总分钟数筛选
将每日时间转换为当日总分钟数,通过数值范围快速过滤:
import pandas as pd # 计算每个时间点的当日总分钟数(0-1439) total_minutes = df.index.hour * 60 + df.index.minute # 筛选5:10(310分钟)到19:30(1170分钟)之间的数据 filtered_df = df[(total_minutes >= 310) & (total_minutes <= 1170)]
方法2:直接判断小时与分钟组合
通过拆分小时和分钟的逻辑条件进行筛选,可读性更强:
# 构建筛选条件:时间在5:10之后且19:30之前 filter_condition = ( ((df.index.hour > 5) | ((df.index.hour == 5) & (df.index.minute >= 10))) & ((df.index.hour < 19) | ((df.index.hour == 19) & (df.index.minute <= 30))) ) # 应用条件得到过滤后的数据 filtered_df = df[filter_condition]
说明
- 两种方法均适用于小时级和分钟级时间序列数据,会自动对每日的时间进行判断,无需额外处理跨天逻辑
- 最终的
filtered_df即为保留了日间时段(5:10-19:30)的数据,已自动删除19:30至次日5:10的夜间记录
内容的提问来源于stack exchange,提问作者Shivangi Taneja
相关产品推荐
相关产品推荐

