python - 获取多索引熊猫数据框的元素平均值
问题描述
我创建了一个 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)
将返回所有列/行的平均值,这不是我需要的。我怎么能理解这个意思?
解决方案
你可以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
推荐阅读
- python - 用逗号打印所有 False 参数
- python - 如何计算文本中特定句子的出现次数?
- amazon-web-services - 即时切换 Dynamodb 区域
- angular - NGXS - 如何打包一个动作以便可以远程调度它
- java - 单击 android 小部件上的 imagebutton 后显示一个简单的吐司
- javascript - JavaScript 减少和解构问题
- javascript - React props.children 在第一次状态更改后不会重新渲染
- python - 从多个 .py 和 .svg 文件创建一个 EXE 文件
- reactjs - 将表单输入的值传递给 React 中的兄弟组件
- java - 启动 eureka 客户端服务后,Spring Cloud Eureka 服务器会立即重启。(升级JDK和Spring Boot版本后。)