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

Pandas新手求助:如何从Series中获取前2个不重复的最大日期?

解决Pandas提取去重后前2个最大日期的问题

嗨,作为Pandas新手遇到这个问题很正常,我来帮你捋捋可能的操作误区,再给出具体的解决办法~

你可能踩的坑

你提到用了first参数但还是有重复值,大概率是没有先对日期列去重,就直接取最大项。比如直接用df['日期列'].nlargest(2),这个方法会返回原数据中前2个最大的行(包括重复日期),而非去重后的日期值;如果是用groupby搭配first,可能分组逻辑不对,也没法达到去重取top的效果。

另外还要注意一个关键前提:你的日期列必须是datetime类型,如果是字符串格式,排序逻辑会出错,也可能导致结果不符合预期。

正确的操作步骤

下面是一步步的解决代码,你可以照着调整:

  1. 先读取Excel并转换日期列类型
import pandas as pd

# 读取test工作表(替换成你的Excel文件路径)
df = pd.read_excel("你的文件路径.xlsx", sheet_name="test")

# 将目标日期列转换为datetime类型(替换成你的列名,比如'date')
df['date'] = pd.to_datetime(df['date'], errors='coerce')  # errors='coerce'会把无效日期转成NaT,方便后续处理
  1. 去重后提取前2个最大日期
    有两种简单的写法,效果完全一致:
  • 方法一:去重后直接用nlargest取前2
# 先去重,再取最大的2个日期
top_2_unique_dates = df['date'].drop_duplicates().nlargest(2)
  • 方法二:去重后排序再取前2
top_2_unique_dates = df['date'].drop_duplicates().sort_values(ascending=False).head(2)
  1. (可选)如果日期列有缺失值,加上dropna()过滤掉:
top_2_unique_dates = df['date'].drop_duplicates().dropna().nlargest(2)

验证结果

你可以打印top_2_unique_dates看看,现在得到的就是去重后的前2个最大日期啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 09:40:32