python - 对不同组的python pandas进行计算
问题描述
我有一个包含不同组的熊猫数据集。对于每个组,我想应用不同的计算。最好的方法是什么?
例如,
输入数据
Group val1 val2
1 12 3
1 19 4
2 23 9
3 59 74
3 2 44
输出数据
Group val1 val2 output
1 12 3 3*val1*val2
1 19 4 3*val1*val2
2 23 9 5*val1*val2
3 59 74 10*val1*val2
3 2 44 10*val1*val2
解决方案
您需要创建一个映射/字典d
来将组链接到它们的计算值。接下来,map
它到列Group
并使用 numpy ufunc `reduce of multiply 来创建所需的输出
import numpy as np
d = {1: 3, 2: 5, 3: 10}
df['output'] = np.multiply.reduce([df.Group.map(d), df.val1, df.val2])
Out[243]:
Group val1 val2 output
0 1 12 3 108
1 1 19 4 228
2 2 23 9 1035
3 3 59 74 43660
4 3 2 44 880
如果您不想使用 numpy,只需对每列进行乘法运算
df['output'] = df.Group.map(d) * df.val1 * df.val2
推荐阅读
- android - android studio上的白屏错误(如果有人可以请告诉我)
- elasticsearch - 使用 Elastic Search,如何将包含数组的文档索引到多个文档中,每个数组项一个?
- python - 如何在 Python 中替换大文件中的每个 HTML 部分?
- c# - C#获取控制如何触发事件winforms
- r - 使用 ggplot2 在图形上添加 R2 值
- swift - SceneKit – 根据物体与相机的距离来改变物体的不透明度
- angular - 角度单元测试 - 如何模拟 router.config.data
- bash - Bash if 语句:比较不适用于赋值
- javascript - 如何让这个动画重演?
- java - 如何在 Windows 中将 SMB 添加为 Bonjour 服务