如何按日期及固定时段拆分带DateTimeIndex的大Python DataFrame
处理步骤及代码示例
1. 先筛选出所有符合时段要求的数据
Pandas的between_time()方法专门用来处理DateTimeIndex的时间范围筛选,一步就能把所有日期的9:45-10:30数据挑出来:
# 假设你的大DataFrame名为df,索引已为DateTimeIndex filtered_df = df.between_time(start_time='09:45', end_time='10:30')
2. 按日期拆分并命名小DataFrame
用groupby()按索引的日期部分分组,然后遍历每个分组,给每个小DataFrame加上指定格式的名称,并存入字典方便后续调用:
# 创建一个字典来存储拆分后的小DataFrame daily_dataframes = {} # 按索引的日期分组(index.date会提取出YYYY-MM-DD的日期对象) for date_obj, daily_group in filtered_df.groupby(filtered_df.index.date): # 把日期对象格式化为字符串,比如'2022-09-15' date_str = date_obj.strftime('%Y-%m-%d') # 生成指定格式的名称 df_key = f"XXX-{date_str}" # 将当前日期的分组存入字典 daily_dataframes[df_key] = daily_group
3. 调用小DataFrame的方式
之后你可以通过字典的键直接获取对应日期的小DataFrame,比如:
# 获取2022年9月15日的小DataFrame sep15_df = daily_dataframes['XXX-2022-09-15']
补充说明
- 如果某天没有9:45-10:30的数据(比如周末、节假日无记录),
groupby()会自动跳过该日期,不会生成空的DataFrame。 - 若你的索引还不是DateTimeIndex,先执行这一步转换:
df.index = pd.to_datetime(df.index)
内容的提问来源于stack exchange,提问作者GAO
相关产品推荐
相关产品推荐

