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

基于x、y列组合筛选pandas中time值最小的行

按x、y分组获取time最小值对应行的解决方案

这问题我平时处理重复分组数据时经常碰到,用pandas可以轻松搞定,给你两种实用的方案,按需选择:

方案1:只保留每组第一个time最小的行

如果同一x、y组合下只有一个最小time值,或者你只需要每组的第一个最小值行,用这个方法最高效:

# 假设你的DataFrame名为df
# 按x、y分组,获取每组time最小的行索引
min_time_idx = df.groupby(['x', 'y'])['time'].idxmin()
# 根据索引提取目标行
result_df = df.loc[min_time_idx]

原理很简单:groupby(['x', 'y'])把数据按x和y的唯一组合拆分,['time'].idxmin()会返回每组中time值最小的那一行的原始索引,最后用loc就能精准提取这些行。

方案2:保留所有time为最小值的行

如果存在同一x、y组合下多个行的time值相同且都是该组最小值的情况,想要把这些行都保留下来,就用这个方法:

# 计算每个行所在组的最小time值,生成和原df同长度的列
group_min_time = df.groupby(['x', 'y'])['time'].transform('min')
# 筛选出time等于对应组最小值的所有行
result_df = df[df['time'] == group_min_time]

这里transform('min')的作用是给每一行匹配它所在组的最小time值,之后我们只需要筛选出time等于这个值的行即可,所有符合条件的行都会被保留。

小提示

如果你的数据里有缺失值,建议先处理一下,避免影响分组计算:

# 移除x、y、time列中有缺失值的行
df_clean = df.dropna(subset=['x', 'y', 'time'])
# 再用上面的方案处理clean后的df

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 04:08:02