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

如何在Pandas DataFrame中按key保留最小time行并删除重复行?

解决方案

针对你的需求(相同key值保留time最小的行),可以用以下两种高效的Pandas方法实现:

方法1:分组提取最小时间的行

通过groupby按key分组,利用idxmin()获取每个组内time最小的行索引,再用loc提取对应行:

import pandas as pd

data = {
  "key": [1,2,3,4,1,2,3,1],
  "time": [12.4,12.6,12.8,12.5,12.9,12.3,12.8,12.1],
}

df = pd.DataFrame(data)

# 获取每个key对应最小time的行索引
min_time_indices = df.groupby('key')['time'].idxmin()
# 提取目标行并重置索引
result = df.loc[min_time_indices].reset_index(drop=True)
print(result)

方法2:排序后去重

先按key和time升序排序,此时每个key的最小time行排在最前,再用drop_duplicates保留每组第一个行:

import pandas as pd

data = {
  "key": [1,2,3,4,1,2,3,1],
  "time": [12.4,12.6,12.8,12.5,12.9,12.3,12.8,12.1],
}

df = pd.DataFrame(data)

# 按key和time升序排序,再去重保留第一个
result = df.sort_values(by=['key', 'time']).drop_duplicates(subset='key', keep='first').reset_index(drop=True)
print(result)

关于duplicated()的说明

duplicated()仅能标记重复的key行,但无法直接关联time的最小值筛选,因此需要结合排序或分组逻辑才能实现你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 07:50:25