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

如何在Pandas分组后获取每日最高价对应的时间?

解决方法:获取每日最高价对应的日期、时间

嗨,这问题我之前也碰到过!你已经找到了每日最高价,但要关联上对应的时间,得换个思路——直接用groupby('Date')['High'].max()只能拿到最大值,没法带回对应的行信息,所以得用能定位到原行的方法。

方法一:用idxmax()定位最大值所在行

idxmax()会返回每个分组中指定列最大值的索引,之后用loc就能取出完整的行数据:

# 获取每个日期组中High列最大值对应的行索引
max_high_rows = df.groupby('Date')['High'].idxmax()

# 根据索引提取目标列:Date、Time、High
daily_high_details = df.loc[max_high_rows, ['Date', 'Time', 'High']]

如果同一天有多个相同的最高价,这个方法会保留所有对应的行;要是只想留一条,可以在最后加.drop_duplicates(subset='Date')。

方法二:用transform生成当日最大值列再筛选

transform能把分组计算的结果广播回原DataFrame的每一行,这样就能用布尔索引筛选出符合条件的行:

# 给原DataFrame添加一列,存当日的High最大值
df['daily_high_max'] = df.groupby('Date')['High'].transform('max')

# 筛选出High等于当日最大值的行,只保留需要的列
daily_high_details = df[df['High'] == df['daily_high_max']][['Date', 'Time', 'High']]

为什么你之前的语法错了?

你写的df.groupby('Date','Time' as_index=False)有两个问题:

  1. 多个分组列必须放在列表里,正确写法是groupby(['Date', 'Time']);
  2. 就算语法对了,按Date+Time分组也不是你要的结果——这会把每个5分钟的时间点都当成一个分组,而不是找每日最高对应的那个时间点。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 08:32:35