如何用Pandas生成指定时间范围与间隔的时间序列数据集?
使用Pandas生成指定时间间隔的区间数据集
实现步骤
- 导入
pandas和datetime模块处理日期时间 - 将输入的字符串日期转换为Pandas可识别的datetime对象
- 生成按指定间隔排列的时间点序列
- 拆分时间序列为起始/结束列,处理最后一个区间的特殊结束时间
完整代码
import pandas as pd from datetime import timedelta # 输入参数 min_date_str = "18 oct 2022" max_date_str = "20 Oct 2022" interval = "1H" # Pandas频率标识,1H代表1小时 # 解析日期为datetime对象(dayfirst=True确保日/月/年格式解析正确) min_date = pd.to_datetime(min_date_str, dayfirst=True) max_date = pd.to_datetime(max_date_str, dayfirst=True) # 生成时间序列:从min_date到max_date,间隔1小时 time_series = pd.date_range(start=min_date, end=max_date, freq=interval) # 构造Min_date列:取时间序列所有元素,排除最后一个 min_dates = time_series[:-1] # 构造Max_date列:默认取时间序列所有元素排除第一个,最后一个区间调整为max_date前1分钟 max_dates = time_series[1:] max_dates = max_dates[:-1].append(pd.DatetimeIndex([max_date - timedelta(minutes=1)])) # 创建DataFrame并格式化日期显示 df = pd.DataFrame({ "Min_date": min_dates.dt.strftime("%d/%m/%Y %H:%M:%S"), "Max_date": max_dates.dt.strftime("%d/%m/%Y %H:%M:%S") }) print(df)
代码说明
- 日期解析:
pd.to_datetime配合dayfirst=True,确保"18 oct 2022"被正确解析为2022年10月18日 - 时间序列生成:
pd.date_range的freq参数支持多种频率标识,比如"30T"代表30分钟、"1D"代表1天 - 最后区间处理:按照示例要求,将最后一个区间的结束时间调整为
max_date前一分钟,而非下一个整点 - 日期格式化:通过
dt.strftime将datetime对象转换为DD/MM/YYYY HH:MM:SS格式的字符串
输出截取示例
Min_date Max_date 0 18/10/2022 00:00:00 18/10/2022 01:00:00 1 18/10/2022 01:00:00 18/10/2022 02:00:00 ... 46 19/10/2022 22:00:00 19/10/2022 23:00:00 47 19/10/2022 23:00:00 19/10/2022 23:59:00
内容的提问来源于stack exchange,提问作者python_interest
相关产品推荐
相关产品推荐

