Pandas新手求助:如何从Series中获取前2个不重复的最大日期?
解决Pandas提取去重后前2个最大日期的问题
嗨,作为Pandas新手遇到这个问题很正常,我来帮你捋捋可能的操作误区,再给出具体的解决办法~
你可能踩的坑
你提到用了first参数但还是有重复值,大概率是没有先对日期列去重,就直接取最大项。比如直接用df['日期列'].nlargest(2),这个方法会返回原数据中前2个最大的行(包括重复日期),而非去重后的日期值;如果是用groupby搭配first,可能分组逻辑不对,也没法达到去重取top的效果。
另外还要注意一个关键前提:你的日期列必须是datetime类型,如果是字符串格式,排序逻辑会出错,也可能导致结果不符合预期。
正确的操作步骤
下面是一步步的解决代码,你可以照着调整:
- 先读取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,方便后续处理
- 去重后提取前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)
- (可选)如果日期列有缺失值,加上
dropna()过滤掉:
top_2_unique_dates = df['date'].drop_duplicates().dropna().nlargest(2)
验证结果
你可以打印top_2_unique_dates看看,现在得到的就是去重后的前2个最大日期啦~
内容的提问来源于stack exchange,提问作者user7146708
相关产品推荐
相关产品推荐

