使用多级标题计算所选列的平均值

问题描述

我有一个带有多级标题的数据框,如下所示:

name   1          2         3        4
       x     y    x    y    x    y   x   y
A      1     4    3    7    2    1   5   2
B      2     2    6    1    4    5   1   7

如何计算 1x、2x 和 3x 而不是 4x 的平均值? 我试过了:

df['mean']= df[('1','x'),('2',('3','x')].mean()

这不起作用,它是 syas 键错误。我想得到:

name   1          2         3        4     mean
       x     y    x    y    x    y   x   y  
A      1     4    3    7    2    1   5   2   2
B      2     2    6    1    4    5   1   7   4

有没有办法在保持第一列标题为整数的同时计算平均值?

解决方法

只有一个解决方案:

import pandas as pd

iterables = [[1,2,3,4],["x","y"]]
array = [
    [1,4,7,1,5,2],[2,6,7]
]
index = pd.MultiIndex.from_product(iterables)
df = pd.DataFrame(array,index=["A","B"],columns=index)

df["mean"] = df.xs("x",level=1,axis=1).loc[:,1:3].mean(axis=1)

print(df)

   1     2     3     4    mean
   x  y  x  y  x  y  x  y     
A  1  4  3  7  2  1  5  2  2.0
B  2  2  6  1  4  5  1  7  4.0

步骤:

  1. 选择所有带有 df.xs("x",axis=1) 的“x”列
  2. 使用 .loc[:,1:3] 仅选择第 1 到第 3 列
  3. .mean(axis=1) 计算平均值

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...