Получите поэлементное среднее значение для мультикадрового информационного кадра панд - PullRequest
0 голосов
/ 31 октября 2018

Я создал мультииндексный фрейм данных, который выглядит следующим образом:

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     ...

Так что в результате получается двухмерная таблица формы (112, 138). df.values.mean(axis=1) или df.values.mean(axis=0) вернет среднее значение по всем столбцам / строкам, а это не то, что мне нужно. Как я могу получить это значит?

1 Ответ

0 голосов
/ 31 октября 2018

Вы можете попробовать mean с 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
...