如何在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
相关产品推荐
相关产品推荐

