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

按组筛选Pandas DataFrame:仅保留每组最早日期的记录

保留每组最早日期的所有记录

针对大型数据集,要保留每个分组(按names)中对应最早日期的全部记录,用Pandas可以高效实现:

核心思路

  1. 按names分组,计算每组的最小日期
  2. 将每组的最小日期映射到原数据的每一行,筛选出日期等于对应组最小日期的记录

实现代码

# 先确保日期列是datetime类型(示例中已处理,大型数据集建议先做此转换)
# df['dates'] = pd.to_datetime(df['dates'])

# 为每条数据标记其所在组的最早日期
group_min_date = dfex.groupby('names')['dates'].transform('min')

# 筛选符合条件的记录
filtered_df = dfex[dfex['dates'] == group_min_date]

# 查看结果
print(filtered_df)

代码说明

  • groupby('names')['dates'].transform('min'):对每个names分组计算最早日期,然后将这个值广播到该组的所有行,生成和原数据长度一致的Series,方便直接对比筛选。
  • 这种方法是向量式操作,避免了循环遍历分组,处理大型数据集时效率远高于逐组处理的方式。

运行结果

运行后会得到符合要求的数据集:

names      dates
0    jim 2019-01-01
1    jim 2019-01-01
2    jim 2019-01-01
9    bob 2019-01-05
10   bob 2019-01-05
15  sara 2019-01-02
16  sara 2019-01-02
17  sara 2019-01-02
18  sara 2019-01-02

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 22:13:21