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

如何在Python中过滤Excel数据集年份?提取最近20年数据

解决Python按年份过滤Excel数据提取最近20年数据的问题

你的代码存在几个关键问题:

  • 语法错误:pd.read_csv的参数写法混乱,存在多余括号和逗号的错误
  • 用固定日期范围2000-01-01到2020-01-01,这不是最近20年的动态范围;另外你提到是Excel数据集,应该用pd.read_excel而非pd.read_csv(如果是CSV文件可忽略这一点)
  • 未将date列转换为日期类型,直接过滤会失效

下面是正确的实现步骤:

步骤1:读取数据并转换日期列

import pandas as pd
from datetime import datetime, timedelta

# 读取Excel数据(如果是CSV文件替换为pd.read_csv)
df = pd.read_excel("你的数据文件.xlsx")

# 将date列转换为datetime类型,确保日期过滤逻辑生效
df['date'] = pd.to_datetime(df['date'], errors='coerce')
# 移除日期转换失败的无效行(可选)
df = df.dropna(subset=['date'])

步骤2:计算动态的最近20年日期范围

不用写死日期,根据当前时间自动计算起始点:

# 获取当前日期
current_date = datetime.now()
# 计算20年前的日期,用365.25处理闰年误差
start_date = current_date - timedelta(days=20*365.25)

步骤3:过滤数据

# 筛选date列在起始日期之后的数据
filtered_df = df[df['date'] >= start_date]

可选:验证结果

打印过滤后的日期范围确认效果:

print("过滤后最早日期:", filtered_df['date'].min())
print("过滤后最晚日期:", filtered_df['date'].max())

如果你的需求是固定取最近20个完整年份(比如2004-2024,而非当前日期往前推20年),可以调整起始日期的计算方式:

current_year = datetime.now().year
start_year = current_year - 20
start_date = datetime(start_year, 1, 1)
filtered_df = df[(df['date'].dt.year >= start_year)]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 12:10:21