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

Pandas按timestamp分组取最小distance时如何保留对应name列

解决方案

你要的需求可以通过groupby().idxmin()一步实现,不需要额外做关联,70万行数据可以秒级处理,完全不会有性能问题。

实现逻辑

idxmin()会返回每个分组里distance列最小值对应的原DataFrame行索引,直接用这个索引从原表取对应行的字段即可,不会产生额外的关联开销。

示例代码

# 按timestamp分组,取每个分组中distance最小的行的索引
min_idx = df1.groupby('timestamp')['distance'].idxmin()
# 根据索引取对应行的指定字段,得到最终结果
result = df1.loc[min_idx, ['timestamp', 'name', 'distance']].reset_index(drop=True)

注意事项

  • 如果同一个timestamp下存在多行完全相同的最小distance,idxmin()只会返回第一行的索引,符合你要求的timestamp唯一的需求
  • 该方法的时间复杂度为O(n),远低于merge操作的复杂度,70万行数据内存占用极低

原有方案的性能问题原因

你之前用聚合结果和原表merge的方案,需要做两次大表的字段匹配,若存在同分组下多个相同最小distance的行,还会产生冗余数据导致timestamp重复,同时内存开销会翻倍,自然会出现性能不足的问题。

内容的提问来源于stack exchange,提问作者Aleksander Kuś

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 21:45:06