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

如何在Pandas中按site分组提取temp列最大值对应的行?

问题:按site分组提取temp最大值对应的行

示例DataFrame:

site  temp  month  day
A     15    7      18
A     11    6      12
A     22    9       3
B      9    4      23
B      3    2      11
B     -1    5      18

需要输出每个site对应temp列最大值所在的行,预期结果:

site  temp  month  day
A     22    9      3
B      9    4     23

尝试以下代码后得到错误结果(输出全局最大值22重复两次):

for i in DF['site'].unique():
    print(DF.temp.max())

解决方案

错误原因

你的代码每次循环都直接调用DF.temp.max(),这是计算整个DataFrame的temp全局最大值,没有针对当前循环的site筛选数据,所以会重复输出全局最大值22。

方法1:groupby + idxmax(推荐)

通过分组找到每个site组内temp最大值的索引,再提取对应行:

# 获取每个site组内temp最大值的行索引
max_indices = DF.groupby('site')['temp'].idxmax()
# 根据索引提取目标行
result = DF.loc[max_indices]
print(result)

方法2:transform 筛选

用transform生成每个组的最大值列,再匹配筛选:

# 为每行生成其所在site组的temp最大值
group_temp_max = DF.groupby('site')['temp'].transform('max')
# 筛选temp等于组内最大值的行
result = DF[DF['temp'] == group_temp_max]
print(result)

方法3:改进循环(不推荐,大数据集效率低)

如果坚持用循环,每次需先筛选当前site的子数据集:

for site in DF['site'].unique():
    site_subset = DF[DF['site'] == site]
    max_row = site_subset[site_subset['temp'] == site_subset['temp'].max()]
    print(max_row)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 04:25:24