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

使用pandas聚合函数取最大值时如何显示对应分组列?

原代码的问题

你编写的代码执行到最后一步.max()时,只会对聚合得到的数值列取最大标量值,作为分组索引的customer_state信息不会随max结果返回,所以最终输出只剩孤立的均值数字,丢失了对应的州名信息。

可直接落地的实现方法

方法1:用idxmax()关联索引(推荐,性能最优)

pandas的Series对象自带idxmax()方法,可以直接返回最大值对应的索引标签,不需要对全量数据做全排序,计算效率最高,适配你原来的代码逻辑改动最小:

# 沿用你原有的分组聚合逻辑
agg_result = data.groupby('customer_state').agg({'payment_value':'mean'})
# 获取最高均值对应的customer_state取值
top_state = agg_result['payment_value'].idxmax()
# 获取对应的最高均值数值
top_payment_mean = agg_result['payment_value'].max()
# 输出为你期望的格式,保留6位小数和示例对齐
print(f"{top_state}  {top_payment_mean:.6f}")

方法2:排序后取首位记录

如果需要保留全量州的均值排序结果做后续分析,可以先对聚合结果按均值降序排列,直接提取第一行的索引和值:

state_payment_mean = data.groupby('customer_state')['payment_value'].mean()
# 按均值从高到低排序
sorted_mean = state_payment_mean.sort_values(ascending=False)
# 提取排序后第一行的州名和对应均值
top_state = sorted_mean.index[0]
top_payment_mean = sorted_mean.iloc[0]
print(f"{top_state}  {top_payment_mean:.6f}")

注意:如果分组聚合后直接对结果调用不带任何参数的.max(),最终只会返回纯数值结果,永远无法携带对应的索引行信息,这是你当前结果不符合预期的核心原因。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.30 02:42:06