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

如何获取pandas分组后每组压力值Top2对应的Date/Time列数据

解决方案

你要实现的是按group字段分组后,提取每组压力最高的2条记录的所有信息(包含对应时间戳),可以直接使用以下两种方案实现:

方案1:直接对分组整体取Top N行(最简洁)

不需要单独提取压力列再匹配时间戳,直接对每个分组的全量数据按压力列取前2大值,自动保留所有原始字段:

# 按group分组,每组取Pressure最高的2行,保留全部列(包含Date/Time)
df_top2 = df.groupby('group', group_keys=False).apply(lambda x: x.nlargest(2, 'Pressure')).reset_index(drop=True)

执行后得到的df_top2中就包含你需要的分组、时间戳、压力值三个核心字段,可以直接导出到新工作表。

方案2:基于你已有的行索引匹配时间戳

如果你已经运行了第一段代码拿到了带原行索引的压力Top2结果,可以直接用索引匹配原表的时间戳:

# 你已有的代码,拿到分组+原行号为索引的压力Top2结果
df_pressure_top2 = df.groupby('group')['Pressure'].nlargest(2).rename_axis(index=['group','row_index'])
# 用原行号索引匹配原表的所有字段
df_top2 = df.loc[df_pressure_top2.index.get_level_values('row_index')]

补充说明

如果存在多条压力值相同的记录,nlargest会默认按数据出现的顺序取前2条,如果你需要按时间戳等其他规则处理并列情况,可以在nlargest前增加排序逻辑,比如先按压力降序、再按时间升序排列后取前2:

df_top2 = df.groupby('group', group_keys=False).apply(
    lambda x: x.sort_values(['Pressure', 'Date/Time'], ascending=[False, True]).head(2)
).reset_index(drop=True)

你待提取的样例数据结构参考:
Date/Time与对应压力值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 21:24:03