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

如何用Pandas按year分组获取vol最小值及对应date?

问题解法说明

你的原代码存在逻辑问题:groupby('year').min()[['date', 'vol']]会对分组后的date和vol字段分别取最小值,得到的是分组内最早的日期和最小的成交量,这两个值并不一定来自同一行,和你需要的「vol最小值对应的date」需求不符。

以下是几种可行的解决方法:

方法一:用idxmin()定位索引后提取

# 获取每组vol最小值对应的行索引
min_vol_indices = pandas_df.groupby('year')['vol'].idxmin()
# 根据索引提取对应行的date和vol
result = pandas_df.loc[min_vol_indices, ['date', 'vol']].reset_index(drop=True)

方法二:用transform标记筛选

# 标记每行是否为所在year组的vol最小值行
pandas_df['is_min_vol'] = pandas_df['vol'] == pandas_df.groupby('year')['vol'].transform('min')
# 筛选目标行并保留所需列
result = pandas_df[pandas_df['is_min_vol']][['date', 'vol']].reset_index(drop=True)

方法三:用agg自定义聚合逻辑

result = pandas_df.groupby('year').agg(
    vol=('vol', 'min'),
    date=('date', lambda x: x[pandas_df.loc[x.index, 'vol'] == pandas_df.loc[x.index, 'vol'].min()].iloc[0])
).reset_index(drop=True)

执行后,result中的每一行都会对应某一年的最小成交量,以及该成交量发生的日期,单组结果会符合你给出的示例格式(如1997-07-14 1162876)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 01:45:31