如何用Pandas获取DetectedSpeed最大值对应的Area与Month?
解决方案
先从原DataFrame中提取需要的三列,避免其他列干扰:
df_filtered = df[['Area', 'Month', 'DetectedSpeed']]
接下来定位DetectedSpeed最大值对应的整行数据:
# 找到最大速度所在行的索引 max_speed_idx = df_filtered['DetectedSpeed'].idxmax() # 获取该行数据 max_speed_row = df_filtered.loc[max_speed_idx]
最后输出你需要的格式:
print(f"{max_speed_row['Area']} {max_speed_row['Month']} {max_speed_row['DetectedSpeed']}")
为什么之前的方法不适用?
- 直接用
df.max():会返回每一列各自的最大值(比如Area取字符串排序后的最大值、Month取数值最大值),但这些值不属于同一行,无法得到关联的结果。 - 用
groupby(['Area', 'Month']).max():这是按区域+月份分组后取每组的最大速度,得到的是各组的局部最大值,而非全局最大速度对应的目标行。
如果存在多行有相同的最大速度,上面的方法只会取第一个出现的行。要获取所有符合条件的行,可以用布尔索引:
max_speed_value = df_filtered['DetectedSpeed'].max() all_max_rows = df_filtered[df_filtered['DetectedSpeed'] == max_speed_value]
内容的提问来源于stack exchange,提问作者dangoqut132
相关产品推荐
相关产品推荐

