python - 我如何将分组的掩码 id 除以另一个 df 中的值(df 包含每个掩码 id 的值)
问题描述
df = pd.DataFrame([[1,'A', 4], [1,'B', 2], [2,'C', 5], [2,'A', 5], [3,'B', 2]],
columns=['maskedid ', 'test ', 'value'])
maskedid test value
1 A 4
1 B 2
2 C 5
2 A 5
3 B 2
我想按'maskedid'和'test'分组并运行.describe()我为了找到计数并将计数输出除以另一个数据帧的值。#每个被屏蔽的 id 都有自己的值。
df 具有以下值
maskedid value
1 5
2 6
3 7
解决方案
我的理解是你想生成.describe()
信息并划分其他数据框(df2
)生成的数据。您可以通过以下方式实现:
df.groupby(['maskedid', 'test']).describe()
value
count mean std min 25% 50% 75% max
maskedid test
1 A 1.0 4.0 NaN 4.0 4.0 4.0 4.0 4.0
B 1.0 2.0 NaN 2.0 2.0 2.0 2.0 2.0
2 A 1.0 5.0 NaN 5.0 5.0 5.0 5.0 5.0
C 1.0 5.0 NaN 5.0 5.0 5.0 5.0 5.0
3 B 1.0 2.0 NaN 2.0 2.0 2.0 2.0 2.0
然后,除以df2
匹配maskedid
:
df.groupby(['maskedid', 'test']).describe().div(df2.set_index('maskedid')['value'], axis=0, level=0)
结果:
value
count mean std min 25% 50% 75% max
maskedid test
1 A 0.200000 0.800000 NaN 0.800000 0.800000 0.800000 0.800000 0.800000
B 0.200000 0.400000 NaN 0.400000 0.400000 0.400000 0.400000 0.400000
2 A 0.166667 0.833333 NaN 0.833333 0.833333 0.833333 0.833333 0.833333
C 0.166667 0.833333 NaN 0.833333 0.833333 0.833333 0.833333 0.833333
3 B 0.142857 0.285714 NaN 0.285714 0.285714 0.285714 0.285714 0.285714
使用的输入
df = pd.DataFrame([[1,'A', 4], [1,'B', 2], [2,'C', 5], [2,'A', 5], [3,'B', 2]],
columns=['maskedid', 'test', 'value'])
maskedid test value
0 1 A 4
1 1 B 2
2 2 C 5
3 2 A 5
4 3 B 2
df2 = pd.DataFrame({'maskedid': [1, 2, 3], 'value': [5, 6, 7]})
maskedid value
0 1 5
1 2 6
2 3 7
推荐阅读
- java - 如何处理从 Java 到 Kotlin 的通用列表转换?
- java - 如何在 Andorid Studios 中序列化/可打包对
- javascript - 无法使用法国日期格式从给定日期中减去
- python - 如何使用 numpy 有效地查找转换矩阵中的状态变化?
- airwatch - Airwatch Workspace ONE Web 浏览器的功能
- java - 如何为手动依赖注入创建模拟测试
- kubernetes - 在主机文件系统上哪里可以找到 Kubernetes PV?
- jquery - 多个图像滑块不起作用?只有两个图像在滑动,但我需要超过 2 个图像幻灯片?
- javascript - 位置:通过 javascript 添加时相对不起作用
- php - PHP 禁止使用 @ 字符在命令行上不起作用的警告