pandas - Pandas 按索引均值划分列
问题描述
我有一个带有 2 个索引的 pandas 数据框,我想将每个值除以第二个索引(A,B)的列平均值。
例如输入 df
col1 col2
0 A 1 20
1 A 2 10
2 A 1 10
4 A 4 5
5 B 6 15
6 B 2 50
所以对于 col1,我将 0A 1A 2A 减少 2,因为 1,2,1,4 的平均值是 2。
col1
0 A 0.5
1 A 1
2 A 0.5
4 A 2
5 B 1.5
6 B 0.5
谁能看到这样做的好方法?
解决方案
IIUC,尝试:
df.groupby(level=1)['col1'].apply(lambda x: x/x.mean())
没有应用更好的是:
df.col1/df.groupby(level=1)['col1'].transform('mean')
输出
0 A 0.5
1 A 1.0
2 A 0.5
4 A 2.0
5 B 1.5
6 B 0.5
推荐阅读
- qt - 在QML中得到矩形而不变形
- php - 尝试验证数据库中已存在的电子邮件时出现问题
- android - 如何制作一个 android 应用程序以从连接在同一 wifi 上的我的 android 设备获取 pc 的 IP 地址
- openlayers - 超出标记区域时文本消失 打开图层
- angular - 如何在活动状态下更改primeng p-tabview标头的背景颜色?
- javascript - JSON 示例让我感到困惑 - 关于 JSON.parse、JSON.stringify、localStorage.setItem 和 localStorage.getItem
- scala - Spark Scala 数据框列不匹配
- c# - SSIS 脚本任务找不到 Newtonsoft.Json
- c# - 使用 base64 在 iFrame 中渲染 PDF 的问题
- javascript - 选择表单材质 UI,不能覆盖占位符