我创建了一个multiIndex数据框,如下所示:
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 ...
因此,结果是形状为2D的表格(112、138)。 df.values.mean(axis=1)
或df.values.mean(axis=0)
将返回我不需要的所有列/行的均值。我怎么能得到这个意思?
答案 0 :(得分:1)
您可以尝试将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