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

