You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从DataFrame中为盘后数据分组查找下一个可用日期

解决方案

步骤1:提取并排序所有唯一交易日

先从原始分钟级数据中提取所有实际存在的交易日,去重后排序,自动排除节假日和无数据日期:

# 提取唯一交易日并排序,确保date列为datetime64类型
unique_dates = minuteData['date'].drop_duplicates().sort_values().reset_index(drop=True)

步骤2:构建「当前日期→下一个交易日」映射字典

基于排序后的交易日序列,为每个日期匹配对应的下一个有效交易日:

# 创建映射字典:key为当前日期,value为下一个有数据的交易日
next_date_map = {}
for i in range(len(unique_dates)-1):
    current_date = unique_dates[i]
    next_date = unique_dates[i+1]
    next_date_map[current_date] = next_date

# 处理序列最后一个日期(可根据业务调整,此处设为自身)
last_date = unique_dates.iloc[-1]
next_date_map[last_date] = last_date

步骤3:生成适配节假日的new date列

根据盘后时段规则,结合映射字典生成正确的关联交易日:

import pandas as pd

def get_new_date(row):
    if row['times'] > pd.Timestamp('15:59').time():
        # 16:00之后的盘后数据,关联下一个交易日
        return next_date_map[row['date']]
    else:
        # 9:30之前的盘前数据,关联当前交易日
        return row['date']

# 应用函数生成new date列
NonMarketHours['new date'] = NonMarketHours.apply(get_new_date, axis=1)

步骤4:分组计算盘后时段最值

沿用你原有的分组逻辑,此时new date已自动适配所有节假日:

PMData = NonMarketHours.groupby('new date').agg({'low': 'min', 'high': 'max'})[['low', 'high']].reset_index()

关键说明

  • 该方案完全依赖数据中实际存在的日期,无需手动维护节假日列表
  • 确保minuteData['date']为datetime64类型,若为字符串需先转换:minuteData['date'] = pd.to_datetime(minuteData['date'])
  • 最后一个日期的处理可根据业务需求调整(如设为None或抛出提示)

内容的提问来源于stack exchange,提问作者svlad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 14:45:38