首页 > 解决方案 > 对不同组的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

标签: pythonpandasdata-manipulation

解决方案


您需要创建一个映射/字典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

推荐阅读