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

如何使用pandas按ts_code分组筛选high列最大值对应索引日期后的数据

pandas实现按分组最大值日期筛选后续所有数据

前提说明

假设你的原始数据集存储在变量df中,且已经将交易日期设置为datetime64[ns]类型的索引。

完整实现代码

import pandas as pd

# 1. 构建每个ts_code与high最大值对应日期的映射
# 先重置索引提取日期列,方便后续匹配
df_temp = df.reset_index(names="trade_date")
# 取每个ts_code分组下high最大值对应的行,提取日期生成映射
max_date_mapping = df_temp.loc[df_temp.groupby("ts_code")["high"].idxmax()].set_index("ts_code")["trade_date"]

# 2. 分组筛选每个ts_code下最大值日期及之后的所有数据
res = df_temp.groupby("ts_code", group_keys=False).apply(
    lambda group: group[group["trade_date"] >= max_date_mapping[group.name]]
# 恢复原索引结构并按日期排序
).set_index("trade_date").sort_index()

代码逻辑说明

  • 第一步通过groupby+idxmax定位每个ts_code分组下high最大值对应的行,提取对应日期生成映射关系,避免后续分组内重复计算
  • 第二步分组后逐组匹配对应最大日期,筛选出日期大于等于该值的所有行,最后恢复索引结构即可得到符合要求的结果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 07:48:04