如何对Pandas多级列中同Level 0的列按行求均值?
解决多级列按Level 0分组求行均值的最优方法
直接用Pandas内置的groupby方法结合axis=1参数,按列索引的Level 0分组后计算行均值,这比for循环高效得多,且代码简洁,充分利用了Pandas的向量化运算优化。
示例代码
先构造一个带多级列的测试DataFrame:
import pandas as pd import numpy as np columns = pd.MultiIndex.from_tuples([('g1', 'col1'), ('g1', 'col2'), ('g1', 'col3'), ('g2', 'colA'), ('g2', 'colB')]) df = pd.DataFrame(np.random.randn(5, 5), columns=columns)
执行分组求均值操作:
df_result = df.groupby(level=0, axis=1).mean()
关键说明
level=0:指定按列索引的第0级(即你提到的Level 0)进行分组axis=1:表示对列方向执行分组操作mean():对每个分组内的所有列按行计算均值,自动合并为以Level 0名称为列名的新DataFrame
这种方法无需手动遍历分组,Pandas内部会高效处理,数据量越大,相比for循环的性能优势越明显。
内容的提问来源于stack exchange,提问作者newpyspark
相关产品推荐
相关产品推荐

