Python 获取多索引数据帧的元素平均值

Python 获取多索引数据帧的元素平均值,python,pandas,dataframe,multi-index,Python,Pandas,Dataframe,Multi Index,我创建了一个多索引数据框,如下所示: df= var0 var1 var2 var3 var4 ... var137 0 0 10 2 0 5 1 ... 9 1 40 2 3 4 13 ... 7 2 60 3 5 6 3 ... 10 ... 11

我创建了一个多索引数据框,如下所示:

df= 
            var0  var1  var2  var3  var4 ... var137
    0   0    10    2     0     5     1    ...  9  
        1    40    2     3     4     13   ...  7  
        2    60    3     5     6     3    ...  10
        ...
        111  0    1      1     0     2    ...  0
    1   0    1    20     10    5     1    ...  0  
        1    4    20     13    4     10   ...  3  
        2    6    30     15    6     1    ...  1
        ...
        111  0    1      1     0     2    ...  1
    2   0    0    2      0     5     16   ...  9  
        1    0    12     83    34    13   ...  17  
        2    0    30     56    66    3    ...  10
        ...
        111  0    1      1     0     2    ...  0
    ... 
    9   0    0    2      0     5     16   ...  9  
        1    0    12     83    34    13   ...  17  
        2    0    30     56    66    3    ...  10
        ...
        111  0    1      1     0     2    ...  1
下面是我如何生成此数据帧的:

frames = []
col_names = list()
col_names += [('var%d' % (j )) for j in range(112)]
for i in range(0, 10):
    result = get_results(...)
    df_tmp = pd.DataFrame(data=results, columns=col_names)
    frames.append(df_tmp)
df = pd.concat(frames, axis=0, keys=range(0, 112))
我需要通过以下方式获得平均值:

        var0                var1              var2  var3  ... var137
    0   (10+1+0+...)/10    (2+20+2+...)/10       ...          (9+0+9+...)/10
    1   (40+4+0+...)/10    (2+20+12+...)/10      ...          (7+3+17+...)/10  
    2   (60+6+0+...)/10    (3+30+30+...)/10      ...          (10+1+10+...)/10
    ...
    111     ...

因此,结果是一个二维形状表(112138)
df.values.mean(轴=1)
df.values.mean(轴=0)
将返回所有列/行的平均值,这不是我需要的。我怎么能理解这个意思

您可以尝试使用
level=1

df.mean(level=1)
Out[170]: 
          var0       var1       var2  var3       var4    var137
2                                                              
0     3.666667   8.000000   3.333333   5.0   6.000000  6.000000
1    14.666667  11.333333  33.000000  14.0  12.000000  9.000000
2    22.000000  21.000000  25.333333  26.0   2.333333  7.000000
111   0.000000   1.000000   1.000000   0.0   2.000000  0.333333

你的回答是正确的,谢谢。但是你能告诉我将级别设置为1意味着什么吗?@Birish获得级别1的平均值你可以考虑
df.groupby(级别=1)。mean()
两者都产生相同的结果