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

如何查询Pandas DataFrame中平均用时最短的省份

解决方法:找到DataFrame中平均完赛时间最短的省份

嘿,这个需求很实用,用pandas几步就能搞定!我给你梳理几种常用的方法,你可以根据自己的DataFrame情况选:

基础场景:时间列是可直接比较的数值类型

假设你的DataFrame名为df,省份列叫省份,平均完赛时间列叫平均完赛时间(如果你的列名不一样,替换成实际名称就行):

方法1:用idxmin()快速定位(推荐)

idxmin()会返回平均完赛时间列最小值对应的行索引,再通过loc提取对应的省份名称:

fastest_province = df.loc[df['平均完赛时间'].idxmin(), '省份']
print(f"平均用时最短的省份:{fastest_province}")

方法2:先排序再取首行

如果需要同时查看排序后的完整数据,可以先按时间升序排序,再取第一行的省份:

# 按平均完赛时间升序排序
sorted_df = df.sort_values(by='平均完赛时间', ascending=True)
# 提取第一行的省份
fastest_province = sorted_df.iloc[0]['省份']

特殊场景:存在多个省份时间相同的情况

如果有多个省份的平均完赛时间并列最短,上面的方法只会返回第一个。要找出所有符合条件的省份,可以这么做:

# 先获取最短的时间值
min_time = df['平均完赛时间'].min()
# 筛选出所有时间等于最短值的省份,转成列表
fastest_provinces = df[df['平均完赛时间'] == min_time]['省份'].tolist()
print(f"平均用时最短的省份有:{', '.join(fastest_provinces)}")

注意:时间列是字符串格式的情况

如果你的平均完赛时间列是类似"1:25:30"这样的字符串,需要先转换成可比较的数值(比如总秒数):

import pandas as pd

# 将时间字符串转换为时间差,再提取总秒数
df['完赛时间_总秒数'] = pd.to_timedelta(df['平均完赛时间']).dt.total_seconds()
# 再用之前的方法找最短时间对应的省份
fastest_province = df.loc[df['完赛时间_总秒数'].idxmin(), '省份']

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:25:54