pandas使用groupby指定axis=1按行值聚合列触发KeyError问题咨询
报错原因
当调用groupby时,axis参数决定了分组的维度,by参数的取值逻辑和axis强绑定:
axis=0(默认按行分组):传入字符串类型的by参数时,pandas会到列索引中匹配对应列,用该列的所有值作为行的分组键axis=1(按列分组):传入字符串类型的by参数时,pandas会到列索引中匹配,你传入的r1是行索引的标签,不存在于列索引中,因此触发KeyError。
按指定行值聚合列的实现方法
如果要按某一行的值作为列的分组依据,直接显式传入该行的取值序列作为by参数即可,示例代码如下:
# 按r1行的值对列分组,求每组均值 print(junk_df.groupby(junk_df.loc["r1"], axis=1).mean())
运行后输出结果:
1 2 r1 1.0 2.0 r2 1.0 2.0 r3 2.5 3.0 r3 2.5 3.0 r5 4.0 4.0 r6 4.0 4.0
结果的列名就是r1行的取值,每一行对应原数据同索引行,按分组后的列求均值得到结果。
内容的提问来源于stack exchange,提问作者m_fmi
相关产品推荐
相关产品推荐

