You need to enable JavaScript to run this app. 如何按变量从pandas DataFrame中删除各分组的首年数据
优惠活动
大模型
产品
解决方案
定价
更多

如何按变量从pandas DataFrame中删除各分组的首年数据

实现方案

前置准备

先将存储日期的Date列从字符串转为pandas datetime格式,否则无法提取年份维度信息:

import pandas as pd
df['Date'] = pd.to_datetime(df['Date'])

方案1:矢量化实现(适合百万级行的股票全量数据,运行效率更高)

  • 按股票代码Symbol分组,通过transform广播计算每只股票分组内的最早交易年份
  • 通过布尔索引筛选,仅保留日期年份大于对应股票首年的记录
# 匹配每一行所属股票的首年值
first_year_per_symbol = df.groupby('Symbol')['Date'].dt.year.transform('min')
# 过滤掉所有属于首年的行
df_cleaned = df[df['Date'].dt.year > first_year_per_symbol].copy()

方案2:分组过滤实现(逻辑直观易读,适合中小数据量场景)

直接对每个股票分组应用过滤规则,删除首年对应的所有记录:

df_cleaned = df.groupby('Symbol', group_keys=False).filter(
    lambda group: group['Date'].dt.year > group['Date'].dt.year.min()
)

补充说明:当前示例中Price列为带$符号的字符串格式,本次删除首年数据的需求不涉及价格字段的格式处理,若后续需要做价格计算,可单独将该列转为数值型。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.04 16:27:07