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

如何筛选Pandas DataFrame,获取每年最后一行数据?

Pandas筛选DataFrame每年最后一个日期的行数据

需求说明

从给定的Pandas DataFrame中,仅保留每年最后一个日期对应的行数据。

原始DataFrame

A          B          C          D          E        F          G  
Date                                                                                   
2018-05-03  20.700001  20.840000  20.549999  20.549999  12.248506  1355100   0.462484  
2018-05-15  19.400000  19.400000  18.620001  19.000000  11.748817  5060500   0.736852  
2018-08-10  19.709999  19.840000  19.209999  19.400000  12.286919  2369800   0.477069  
2018-11-12  22.190001  22.500000  22.030001  22.379999  14.629877  1727100   0.711570  
2018-12-18  23.450001  23.450001  22.730000  22.799999  15.160932  1576600   0.399275  
2019-05-06  25.990000  26.000000  25.570000  25.950001  17.365524  1500700   0.165950  
2019-05-20  23.990000  24.940001  23.990000  24.889999  16.851423  1449000   0.280836  
2019-08-09  28.299999  28.450001  27.900000  28.250000  19.616335  1868600   0.722007 
2019-11-21  27.750000  27.959999  27.709999  27.820000  19.695263   884000   0.541491 
2019-12-17  30.299999  30.440001  29.910000  30.030001  21.386765  1019300   0.180416

预期结果

A          B          C          D          E        F          G  
Date                                                                                   
2018-12-18  23.450001  23.450001  22.730000  22.799999  15.160932  1576600   0.399275  
2019-12-17  30.299999  30.440001  29.910000  30.030001  21.386765  1019300   0.180416 

解决方案

方法一:分组筛选(适配非标准年末日期)

先确保索引为datetime类型,再按年份分组,提取每组中日期最大的行:

import pandas as pd

# 转换索引为datetime类型(若原始索引不是该类型)
df.index = pd.to_datetime(df.index)

# 按年份分组,筛选每年最后一个日期的行
result = df.loc[df.groupby(df.index.year)['A'].idxmax()]

这里选取列A仅用于获取索引,所有列的索引一致,可替换为任意列名。

方法二:resample重采样(更简洁)

利用Pandas的resample方法按年重采样,直接提取每个年周期的最后一行:

result = df.resample('Y').last()

'Y'代表按年周期划分,last()会自动提取每个周期内的最后一行数据,完全匹配需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 04:45:14