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

