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

如何在Pandas多级DataFrame中按顶层分组获取每行最大值?

解决Pandas多级列按顶层分组取每行最大值的问题

针对你给出的多级列DataFrame,要实现按顶层列(A、B)分组,每行取对应组内的最大值,正确的语句是:

df.groupby(level=0, axis=1).max()

验证示例

先构造对应的DataFrame:

import pandas as pd

# 创建多级列索引
columns = pd.MultiIndex.from_tuples([('A', 'a'), ('A', 'b'), ('B', 'a'), ('B', 'b')])
# 构造数据
data = [[1, 2, 3, 4], [2, 3, 3, 2], [7, 2, 1, 0]]
df = pd.DataFrame(data, columns=columns)

运行上述groupby语句后,得到的结果就是:

A  B
0  2  4
1  3  3
2  7  1

为什么之前的方法不对?

你之前用的df.groupby(level=0).apply(max)默认是按行索引分组(axis=0),所以会对每一行的所有列取最大值,不符合需求。而指定axis=1后,groupby会按列索引的顶层分组,再对每行的组内数据计算最大值,刚好匹配你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 13:52:04