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

Pandas按id列分组取最早日期对应行时如何保留所有同日期的记录

代码修改方案

首先需要确保日期列是datetime类型,否则字符串格式的日期比较可能出现逻辑错误,完整修改后的代码如下:

# 转换日期列为标准datetime类型,指定格式避免解析错误
df['date'] = pd.to_datetime(df['date'], format='%m/%d/%Y')

# 按id分组后,广播每个分组的最小日期,筛选所有日期等于最小日期的行
df_ear = df[df['date'] == df.groupby('id')['date'].transform('min')]

# 统计location出现频次,取排名前3的结果
top3_locations = df_ear['location'].value_counts().head(3)

原理解释

和之前用idxmin()的逻辑不同,groupby('id')['date'].transform('min')会给原DataFrame的每一行返回它所属id分组的最小日期,直接做等值筛选就能保留同一个id下所有日期为最小值的记录,不会漏记同一分组下多个相同最早日期的行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 22:45:04