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

Pandas大数据量下按分组取对应列最小值的高效方法咨询

高效实现分组添加最小日期列

需求场景

现有如下结构的DataFrame:

matterwork_date
101/01/2020
201/02/2020
101/04/2020
201/05/2020

需要新增first_date列,值为相同matter分组下的最小work_date,预期结果:

matterwork_datefirst_date
101/01/202001/01/2020
201/02/202001/02/2020
101/04/202001/01/2020
201/05/202001/02/2020

原低效代码问题

你当前使用的逐行apply方法在处理30万行数据时速度极慢,核心原因是逐行循环+重复筛选分组数据,开销极大:

min_dict = {}
def check_dict(val):
    return min_dict.setdefault(val,min(df[df['tmatter']==val]['tworkdt']))

df['first_day'] = df.apply (lambda row: check_dict(row.tmatter), axis = 1)

高效解决方案

用pandas内置的groupby+transform矢量化操作,效率提升明显:

import pandas as pd

# 第一步:确保日期列是datetime类型(如果原始数据是字符串格式)
df['work_date'] = pd.to_datetime(df['work_date'], format='%m/%d/%Y')

# 第二步:分组计算最小值并广播到每一行
df['first_date'] = df.groupby('matter')['work_date'].transform('min')

# 可选:如果需要转回原字符串格式
df['first_date'] = df['first_date'].dt.strftime('%m/%d/%Y')

优势说明

  • 全程矢量化操作,避免Python层面的循环开销,处理百万级数据也能快速完成
  • groupby是pandas底层优化过的分组逻辑,比手动筛选分组高效得多
  • transform自动将聚合结果匹配到原DataFrame的对应行,无需手动维护字典映射

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 05:15:41